0

我在 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.

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

4

3 回答 3

1

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

如果你真的觉得工作量太大,你可以使用(1.3 中新增的)TemplateResponse 类

于 2011-05-04T12:37:03.590 回答
1

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

于 2011-05-04T13:40:43.677 回答
-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 }}

于 2011-05-04T12:44:03.223 回答