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

У меня есть проект в 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.3. используйте функцию shortcuts.render и не беспокойтесь о requestcontext, включая ваши взгляды

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

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

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

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

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

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

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

Другие вопросы по тегам