Пользовательский контекстный процессор 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 }}
Вернуться на верх