I'm upgrading a project to Django 1.10 and it has code like the following:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request',
)
As far as I can tell this was a common pattern when using previous versions of Django to ensure that the default context processors.
In Django 1.10 TEMPLATE_CONTEXT_PROCESSORS
was removed in favour of the TEMPLATES
setting which should now be defined something like this:
TEMPLATES = [
{
...,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
...
],
},
},
]
How should the TEMPLATES
setting be defined to properly match the behaviour of the first code sample, i.e. ensuring that the default context processors are always included? Should I just manually include whatever was in django.conf.global_settings
before? Does Django 1.10 have defaults defined anywhere? Are there any new context processors which should probably be included by default?
The question is "How should the TEMPLATES setting be defined to properly match the behaviour of the first code sample, i.e. ensuring that the default context processors are always included? "
My answer, in a similar situation, was to make a dummy directory and run 'django-admin startproject foo' in it. Then I examined foo/foo/settings.py to see the generated value of TEMPLATES.
This might not answer every question about how TEMPLATES should be set. But it does answer your question, about the default contents of TEMPLATES.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With