Merge branch 'master' of github.com:django/django
This commit is contained in:
commit
b884802346
|
@ -127,8 +127,10 @@ For example::
|
||||||
def my_view(request):
|
def my_view(request):
|
||||||
if settings.SITE_ID == 3:
|
if settings.SITE_ID == 3:
|
||||||
# Do something.
|
# Do something.
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
# Do something else.
|
# Do something else.
|
||||||
|
pass
|
||||||
|
|
||||||
Of course, it's ugly to hard-code the site IDs like that. This sort of
|
Of course, it's ugly to hard-code the site IDs like that. This sort of
|
||||||
hard-coding is best for hackish fixes that you need done quickly. The
|
hard-coding is best for hackish fixes that you need done quickly. The
|
||||||
|
@ -141,11 +143,13 @@ domain::
|
||||||
current_site = get_current_site(request)
|
current_site = get_current_site(request)
|
||||||
if current_site.domain == 'foo.com':
|
if current_site.domain == 'foo.com':
|
||||||
# Do something
|
# Do something
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
# Do something else.
|
# Do something else.
|
||||||
|
pass
|
||||||
|
|
||||||
This has also the advantage of checking if the sites framework is installed, and
|
This has also the advantage of checking if the sites framework is installed,
|
||||||
return a :class:`RequestSite` instance if it is not.
|
and return a :class:`RequestSite` instance if it is not.
|
||||||
|
|
||||||
If you don't have access to the request object, you can use the
|
If you don't have access to the request object, you can use the
|
||||||
``get_current()`` method of the :class:`~django.contrib.sites.models.Site`
|
``get_current()`` method of the :class:`~django.contrib.sites.models.Site`
|
||||||
|
@ -158,8 +162,10 @@ the :setting:`SITE_ID` setting. This example is equivalent to the previous one::
|
||||||
current_site = Site.objects.get_current()
|
current_site = Site.objects.get_current()
|
||||||
if current_site.domain == 'foo.com':
|
if current_site.domain == 'foo.com':
|
||||||
# Do something
|
# Do something
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
# Do something else.
|
# Do something else.
|
||||||
|
pass
|
||||||
|
|
||||||
Getting the current domain for display
|
Getting the current domain for display
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
@ -200,8 +206,8 @@ subscribing to LJWorld.com alerts." Same goes for the email's message body.
|
||||||
|
|
||||||
Note that an even more flexible (but more heavyweight) way of doing this would
|
Note that an even more flexible (but more heavyweight) way of doing this would
|
||||||
be to use Django's template system. Assuming Lawrence.com and LJWorld.com have
|
be to use Django's template system. Assuming Lawrence.com and LJWorld.com have
|
||||||
different template directories (:setting:`TEMPLATE_DIRS`), you could simply farm out
|
different template directories (:setting:`TEMPLATE_DIRS`), you could simply
|
||||||
to the template system like so::
|
farm out to the template system like so::
|
||||||
|
|
||||||
from django.core.mail import send_mail
|
from django.core.mail import send_mail
|
||||||
from django.template import loader, Context
|
from django.template import loader, Context
|
||||||
|
@ -216,9 +222,9 @@ to the template system like so::
|
||||||
|
|
||||||
# ...
|
# ...
|
||||||
|
|
||||||
In this case, you'd have to create :file:`subject.txt` and :file:`message.txt` template
|
In this case, you'd have to create :file:`subject.txt` and :file:`message.txt`
|
||||||
files for both the LJWorld.com and Lawrence.com template directories. That
|
template files for both the LJWorld.com and Lawrence.com template directories.
|
||||||
gives you more flexibility, but it's also more complex.
|
That gives you more flexibility, but it's also more complex.
|
||||||
|
|
||||||
It's a good idea to exploit the :class:`~django.contrib.sites.models.Site`
|
It's a good idea to exploit the :class:`~django.contrib.sites.models.Site`
|
||||||
objects as much as possible, to remove unneeded complexity and redundancy.
|
objects as much as possible, to remove unneeded complexity and redundancy.
|
||||||
|
@ -240,6 +246,15 @@ To do this, you can use the sites framework. A simple example::
|
||||||
>>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url())
|
>>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url())
|
||||||
'http://example.com/mymodel/objects/3/'
|
'http://example.com/mymodel/objects/3/'
|
||||||
|
|
||||||
|
|
||||||
|
Default site and ``syncdb``
|
||||||
|
===========================
|
||||||
|
|
||||||
|
``django.contrib.sites`` registers a
|
||||||
|
:data:`~django.db.models.signals.post_syncdb` signal handler which creates a
|
||||||
|
default site named ``example.com`` with the domain ``example.com``. For
|
||||||
|
example, this site will be created after Django creates the test database.
|
||||||
|
|
||||||
Caching the current ``Site`` object
|
Caching the current ``Site`` object
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue