在Django的模板中使用认证数据的方法

yipeiwu_com7年前Python基础

当前登入的用户以及他(她)的权限可以通过 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 }} 中:

{% if user.is_authenticated %}
 <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
 <p>Welcome, new user. Please log in.</p>
{% endif %}

这些用户的权限信息存储在 {{ perms }} 模板变量中。

你有两种方式来使用 perms 对象。 你可以使用类似于 {{ perms.polls }} 的形式来检查,对于某个特定的应用,一个用户是否具有 任意 权限;你也可以使用 {{ perms.polls.can_vote }} 这样的形式,来检查一个用户是否拥有特定的权限。

这样你就可以在模板中的 {% if %} 语句中检查权限:

{% if perms.polls %}
 <p>You have permission to do something in the polls app.</p>
 {% if perms.polls.can_vote %}
  <p>You can vote!</p>
 {% endif %}
{% else %}
 <p>You don't have permission to do anything in the polls app.</p>
{% endif %}

相关文章

实例讲解Python中的私有属性

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子: 复制代码 代码如下: #! encoding=UTF-8   class A:  &n...

Python实现二维曲线拟合的方法

如下所示: from numpy import * import numpy as np import matplotlib.pyplot as plt plt.close() f...

Numpy中的mask的使用

Numpy中的mask的使用

numpy中矩阵选取子集或者以条件选取子集,用mask是一种很好的方法 简单来说就是用bool类型的indice矩阵去选择, mask = np.ones(X.shape[0],...

详解Python正则表达式re模块

正则是处理字符串最常用的方法,我们编码中到处可见正则的身影。 正则大同小异,python 中的正则跟其他语言相比略有差异: 1、替换字符串时,替换的字符串可以是一个函数 2、split...

详解PyCharm+QTDesigner+PyUIC使用教程

详解PyCharm+QTDesigner+PyUIC使用教程

我们在PyCharm安装配置Qt Designer+PyUIC教程中已配置好了PyCharm+QTDesigner+PyUIC环境 这里在此基上我们演示如何使用这些工具,编写一个图形界面...