为django项目中的所有模板提供当前用户

时间:2013-02-03 12:55:28

标签: django django-templates django-authentication

我想知道是否有办法在django应用程序中提供当前用户变量的所有模板,以便我在所有页面中管理登录和注销功能。 这是一种非常普遍的做法,所以必须有一个我错过的明显解决方案。 我知道RequestContext类,但这意味着我必须将它添加到应用程序中的每个视图,这似乎不切实际。 可能是自定义模板标记吗?

3 个答案:

答案 0 :(得分:3)

有一个模板上下文处理器:django.core.context_processors.auth。查看documentation,您可以访问当前用户和模板中的权限。

答案 1 :(得分:0)

您确实可以使用自定义标签来实现这一目标 请注意,默认情况下,自定义标记无权访问request对象,因此无权访问用户数据。要获得对request的访问权限,您可以使用takes_context属性定义自定义标记,并从上下文中获取请求:

类似的东西:

@register.inclusion_tag('userdata.html', takes_context = True)
def userdata(context):
    request = context['request']
    user = request.user
    return {'user':user}

答案 2 :(得分:0)

您可以使用{{ request.user }}来显示当前用户的名称,或者可以使用{{ request.user.is_authenticated }}来查看它是否是匿名用户。