mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
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):
|
||||
if settings.SITE_ID == 3:
|
||||
# Do something.
|
||||
pass
|
||||
else:
|
||||
# Do something else.
|
||||
pass
|
||||
|
||||
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
|
||||
@ -141,11 +143,13 @@ domain::
|
||||
current_site = get_current_site(request)
|
||||
if current_site.domain == 'foo.com':
|
||||
# Do something
|
||||
pass
|
||||
else:
|
||||
# Do something else.
|
||||
pass
|
||||
|
||||
This has also the advantage of checking if the sites framework is installed, and
|
||||
return a :class:`RequestSite` instance if it is not.
|
||||
This has also the advantage of checking if the sites framework is installed,
|
||||
and return a :class:`RequestSite` instance if it is not.
|
||||
|
||||
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`
|
||||
@ -158,8 +162,10 @@ the :setting:`SITE_ID` setting. This example is equivalent to the previous one::
|
||||
current_site = Site.objects.get_current()
|
||||
if current_site.domain == 'foo.com':
|
||||
# Do something
|
||||
pass
|
||||
else:
|
||||
# Do something else.
|
||||
pass
|
||||
|
||||
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
|
||||
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
|
||||
to the template system like so::
|
||||
different template directories (:setting:`TEMPLATE_DIRS`), you could simply
|
||||
farm out to the template system like so::
|
||||
|
||||
from django.core.mail import send_mail
|
||||
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
|
||||
files for both the LJWorld.com and Lawrence.com template directories. That
|
||||
gives you more flexibility, but it's also more complex.
|
||||
In this case, you'd have to create :file:`subject.txt` and :file:`message.txt`
|
||||
template files for both the LJWorld.com and Lawrence.com template directories.
|
||||
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`
|
||||
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://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
|
||||
===================================
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user