在Django的模板中使用认证数据的方法
当前登入的用户以及他(她)的权限可以通过RequestContext在模板的context中使用。
注意
从技术上来说,只有当你使用了RequestContext这些变量才可用。并且TEMPLATE_CONTEXT_PROCESSORS设置包含了“django.core.context_processors.auth”(默认情况就是如此)时,这些变量才能在模板context中使用。TEMPLATE_CONTEXT_PROCESSORS设置包含了"django.core.context_processors.auth"(默认情况就是如此)时,这些变量才能在模板context中使用。
当使用RequestContext时,当前用户(是一个User实例或一个AnonymousUser实例)存储在模板变量{{user}}中:
{%ifuser.is_authenticated%} <p>Welcome,{{user.username}}.Thanksforloggingin.</p> {%else%} <p>Welcome,newuser.Pleaselogin.</p> {%endif%}
这些用户的权限信息存储在{{perms}}模板变量中。
你有两种方式来使用perms对象。你可以使用类似于{{perms.polls}}的形式来检查,对于某个特定的应用,一个用户是否具有任意权限;你也可以使用{{perms.polls.can_vote}}这样的形式,来检查一个用户是否拥有特定的权限。
这样你就可以在模板中的{%if%}语句中检查权限:
{%ifperms.polls%} <p>Youhavepermissiontodosomethinginthepollsapp.</p> {%ifperms.polls.can_vote%} <p>Youcanvote!</p> {%endif%} {%else%} <p>Youdon'thavepermissiontodoanythinginthepollsapp.</p> {%endif%}