Как я могу передать переменные в представление, используя процессор контекста? - PullRequest
3 голосов
/ 04 марта 2012

Я использую контекстный процессор для передачи нескольких переменных во все мои шаблоны. Однако я также хотел бы использовать эти переменные в реальных представлениях, которые отображают соответствующие шаблоны. Должен ли я добавить их в объект сеанса объекта запроса или в сам объект запроса (если это вообще возможно)?

Ответы [ 2 ]

5 голосов
/ 04 марта 2012

Использование RequestContext:

def my_view(request):
    c = RequestContext(request)
    # c['key'] gets the value for 'key' from your context processor.
    return render_to_response('template.html', {}, context_instance = c)
0 голосов
/ 04 марта 2012

Разве вы не можете просто получить ссылку на контекстный процессор и вызвать его в своих представлениях? Из того, что я прочитал в документах , нет ничего особенного в контекстном процессоре:

У контекстного процессора очень простой интерфейс: это просто функция Python, которая принимает один аргумент, объект HttpRequest и возвращает словарь, который добавляется в контекст шаблона. Каждый контекстный процессор должен возвращать словарь.

Пользовательские контекстные процессоры могут жить где угодно в вашей кодовой базе. Django заботится только о том, чтобы на ваши пользовательские контекстные процессоры указывал ваш параметр TEMPLATE_CONTEXT_PROCESSORS.

Вы можете получить доступ к каждому представлению вначале, передав ему параметр request, или, возможно, создать декоратор, который «внедрит» его в ваши представления для вас (что проще в вашем случае).

...