Динамические переменные в Django base.html - PullRequest
4 голосов
/ 16 ноября 2009

У меня есть приложение, которое использует плоские страницы и другие конструкции, которые не принимают объект request. Это вызывает проблемы в base.html. Вот простой пример.

Если бы я хотел что-то вроде "Welcome {{request.user.username}}!" в верхней части каждой страницы, как лучше всего это сделать?

Ответы [ 2 ]

5 голосов
/ 16 ноября 2009

Плоские страницы используют RequestContext в шаблонах рендеринга . Вот еще немного о RequestContext . Достаточно сказать, что вы должны быть в состоянии написать обработчик контекста, чтобы добавить request.user в контекст каждого шаблона. Как то так:

def user(request):
    """A context processor that adds the user to template context"""
    return {
        'user': request.user
    }

Что бы вы добавили к существующему TEMPLATE_CONTEXT_PROCESSORS в settings.py:

TEMPLATE_CONTEXT_PROCESSORS = TEMPLATE_CONTEXT_PROCESSORS + (
    'context_processors.user',
)

Вам просто нужно убедиться, что все ваши представления также связывают RequestContext с их шаблонами:

return render_to_response('my_template.html',
    my_data_dictionary,
    context_instance=RequestContext(request))

Вот хорошее чтение на контекстных процессорах. Они очень полезная функция.

2 голосов
/ 16 ноября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...