Django {{site}} template context not working?
Django strives to be explicit, so it is unlikely that it would set any context by it self. There has to be context processor which sets {{site}}
in settings.CONTEXT_PROCESSORS
. I've checked django.core.context_processors
and django.contrib.sites
and there is no such processor which sets site
. So you probably had a third-party context processor which does that.
It is very easy to write context processor:
myproject/context_processors.py: from django.contrib.sites.models import Site def site(request): return { 'site': Site.objects.get_current() }myproject/settings.py: CONTEXT_PROCESSORS += ['myproject.context_processors.site']
It wont hurt to create a custom context processor
def site(request): return {'site': Site.objects.get_current()}
Note that get_current() uses SITE_ID, which is a global setting in the project (defined in settings.py). If you are going to support multi-sites, you need the SITE_ID variable to change its value depending on the current site being accessed.
Here is a nice snippet that will make it work.