Dan*_*iel 72 django django-authentication
我可以在Django的模板中使用Auth应用程序的权限检查吗?(我想在特权用户的模板末尾显示一个简单的表单)
更重要的是,我应该这样做还是不是"Django方式"?
Vic*_*Neo 164
如果您要检查模板中的权限,以下代码就足够了:
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
模型指的是用户需要权限才能看到表单的模型.
有关更多示例,请参阅https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions.
当前登录用户的权限存储在模板变量中
{{ perms }}
(这需要下面的上下文处理器被使能:django.contrib.auth.context_processors.auth)
Ari*_*ury 18
在 Django 2.0 + 上测试
如果您想查看登录用户拥有的所有权限,请在您的模板 (.html) 上打印:
{{ perms.app_name }}
Run Code Online (Sandbox Code Playgroud)
或者
{{ perms }}
为了检查用户是否有权限,请使用:
{% if perms.app_name.change_model_name_lower_cased %}
Run Code Online (Sandbox Code Playgroud)
例如:
{% if perms.Utilization.change_invoice %}
Run Code Online (Sandbox Code Playgroud)
这里: Utilization 是我的应用程序名称。发票是型号名称。
注意,一般来说,会有4种权限:
另外,如果您想查看用户由于其所属组而拥有的所有权限,请启动 Django shell...
user = User.objects.get(username='somename')
user.get_group_permissions()
Run Code Online (Sandbox Code Playgroud)
此处列出的所有权限均属于他所属的组。
另一种独特的方法是:
{% if 'app_label.permission' in perms %}
<form here>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
例子:
{% if 'auth.view_group' in perms %}
<p> Hello World! </p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
当您想要使用默认/自定义身份验证权限(无论是否为模型创建应用程序)时,这会很方便,因为此方法不需要应用程序名称。它只需要权限表中的权限名称。
您还可以使用 and/or 命令进行多项检查:
{% if 'auth.view_group' in perms and 'auth.add_group' in perms %}
<form here>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51946 次 |
| 最近记录: |