Вы можете передать переменную каждому шаблону, используя Context Processor :
1.Добавление процессора контекста в файл настроек
Сначала вам нужно добавить ваш пользовательский процессор контекста в settings.py
:
# settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
'myapp.context_processors.default', # add this line
'django.core.context_processors.auth',
)
.Получите, что вам нужно будет создать модуль с именем context_processors.py
и поместить его в папку вашего приложения.Вы также можете увидеть, что для этого нужно будет объявить функцию с именем default
(как это мы и включили в settings.py
), но это произвольно.Вы можете выбрать любое имя функции.
2.Создание контекстного процессора
# context_processors.py
from datetime import datetime
from django.conf import settings # this is a good example of extra
# context you might need across templates
def default(request):
# you can declare any variable that you would like and pass
# them as a dictionary to be added to each template's context:
return dict(
example = "This is an example string.",
current_date = datetime.now(),
MEDIA_URL = settings.MEDIA_URL, # just for the sake of example
)
3.Добавление дополнительного контекста к вашим представлениям
Последний шаг - обработка дополнительного контекста с использованием RequestContext()
и передача его в шаблон в качестве переменной.Ниже приведен очень упрощенный пример требуемой модификации файла views.py
:
# old views.py
def homepage(request):
current_date = datetime.datetime.now()
current_section = 'Temporary Home Page'
return render_to_response("base.html", locals())
def contact(request):
current_date = datetime.datetime.now()
current_section = 'Contact page'
return render_to_response("contact.html", locals())
# new views.py
from django.template import RequestContext
def homepage(request):
current_section = 'Temporary Home Page'
return render_to_response("base.html", locals(),
context_instance=RequestContext(request))
def contact(request):
current_section = 'Contact page'
return render_to_response("contact.html", locals(),
context_instance=RequestContext(request))