是否可以自动将用户包含在所有模板中?

时间:2011-05-04 12:24:45

标签: django django-templates django-context

我在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 个答案:

答案 0 :(得分:1)

你自己给出了答案。只要您使用RequestContext,它就会包含在所有模板中。

如果你真的发现了太多的工作,你可以使用(1.3中的新内容)TemplateResponse class

答案 1 :(得分:1)

自从django 1.3开始。使用shortcuts.render函数,不要担心requestcontext包括你的观点

答案 2 :(得分:-1)

或者只是创建一个上下文处理器。看到 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}}