Я подошел к точке, где мне нужно передать определенные переменные ко всем моим представлениям (главным образом переменные типа аутентификации).Создание моего собственного процессора контекста в django
Мне сказали, что писать собственный процессор контекста - лучший способ сделать это, но у меня возникают некоторые проблемы.
Мои настройки файла выглядит следующим образом
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
"sandbox.context_processors.say_hello",
)
Как вы можете видеть, у меня есть модуль под названием «context_processors» и функцию в том, что называется "say_hello.
который выглядит как
def say_hello(request):
return {
'say_hello':"Hello",
}
Правильно ли я предположить, что теперь я могу сделать следующее в моих взглядов?
{{ say_hello }}
Прямо сейчас, это ничего не делает в моем шаблоне.
мой взгляд выглядит
from django.shortcuts import render_to_response
def test(request):
return render_to_response("test.html")
«context_instance» - это то, чего не хватало! Спасибо TM – dotty
Последующие действия, почему мне нужен этот context_instance? Почему мне это не нужно, если я использую систему авторизации django? – dotty
Встроенные представления Django обрабатывают это для вас (они используют 'RequestContext'). Подумайте о обработчике контекста, который вы создали. В качестве аргумента требуется 'request'. Это означает, что вам нужно каким-то образом предоставить текущий запрос логике рендеринга. 'RequestContext' в основном просто обрабатывает простую логику цикла через все контекстные процессоры и передает текущий запрос им, а затем обновляет контекст страницы с результатами. –