Можно ли автоматически включать пользователя во все шаблоны? - PullRequest
0 голосов
/ 04 мая 2011

У меня есть проект в Django 1.3. Для отображения имени пользователя на всех страницах я использую такие теги в base.html

{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}.  
    <a href="/proc/accounts/logout/">loggout</a></p>
{% else %}
    <a href="/proc/accounts/login/">loggin</a>
{% endif %}

Но если я не верну context_instance=RequestContext(request) из представления, значение пользователя в шаблоне будет пустым. 'django.contrib.auth.context_processors.auth' включено в TEMPLATE_CONTEXT_PROCESSORS.

Возможно ли автоматически включить пользователя во все шаблоны?

Ответы [ 3 ]

1 голос
/ 04 мая 2011

начиная с django 1.3. используйте функцию shortcuts.render и не беспокойтесь о requestcontext, включая ваши представления

1 голос
/ 04 мая 2011

Вы дали ответ сами. Пока вы используете RequestContext, он будет включен во все шаблоны.

Если вы действительно обнаружите, что слишком много работы, вы можете использовать (новый в 1.3) TemplateResponse класс .

0 голосов
/ 04 мая 2011

Или просто создайте контекстный процессор.См. http://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors

Поместите это в context_processor.py

def root_categories(request):
    return {
        'user': request.user,
    }

в settings.py, добавьте процессор контекста.

Теперь в вашем шаблоне попробуйте: {{user}}

...