Пользовательский контекстный процессор Django не возвращает никакого значения
Я написал пользовательский контекстный процессор для возврата некоторых часто используемых переменных. Я следовал многочисленным руководствам и читал официальную документацию, но ничего не происходит: контекстный процессор либо не загружается, либо не возвращает никаких значений. Я не получаю никаких ошибок.
название приложения: аукционы
context_processors.py
def test_context_processor(request):
return {
'message': 'Hello, world.'
}
settings.py
...
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.media',
'auctions.context_processors.test_context_processor'
],
},
},
]
...
layout.html
...
<h1>{{ test_context_processor.message }}</h1>
...
Когда я проверяю элемент H1, он пуст - ничего не было возвращено. Это выглядит следующим образом:
<h1></h1>
Я пробовал:
- Загрузка функции в shell и ее опробование (она работает)
- Переименование функции
- Перезапуск сервера
{{ test_context_processor['message'] }}(При этом возникает ошибка)- Жалуется на SO
Все, о чем я могу думать, это то, что в каждом учебном примере используется контекстный процессор для возврата списка объектов из базы данных, в то время как я возвращаю простое строковое значение. Но, конечно, это не имеет значения, верно? Спасибо!
Вы были "почти у цели" с этим, в вашем шаблоне:
{{ test_context_processor['message'] }}
Единственная проблема заключается в том, что контекстные процессоры просто добавляют данные непосредственно в контекст шаблона - который, по сути, является словарем, содержащим переменные шаблона. Они ни под что не подпадают, ни под какое пространство имен, и уж тем более под имя, соответствующее имени контекстного процессора.
Итак, вам нужно сделать следующее:
{{ message }}