Можно ли автоматически включать пользователя во все шаблоны?
У меня есть проект в 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 }}