我可以在Django的模板中使用Auth应用程序的权限检查吗?(我想在模板的末尾为特权用户显示一个简单的表单)
更重要的是,我是否应该这样做,或者这不是“ Django方式”吗?
Answers:
如果您要检查模板中的权限,则以下代码就足够了:
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
其中,模型是指用户需要权限才能查看表单的模型。
有关更多示例,请参阅https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions。
当前登录用户的权限存储在模板变量中
{{ perms }}
(这需要下面的上下文处理器被使能:django.contrib.auth.context_processors.auth
)
perms.app_label.foobar
,即使您拼错了权限名称,也将始终为true。
在Django 2.0 +上测试
如果要查看登录用户拥有的所有权限,请在模板(.html)上打印:
{{ perms.app_name }}
要么
{{ perms }}
为了检查用户是否具有权限,请使用:
{% if perms.app_name.change_model_name_lower_cased %}
例如:
{% if perms.Utilization.change_invoice %}
这里:利用率是我的应用名称。发票是型号名称。
请注意,一般而言,将有4种权限:
另外,如果您要查看用户由于其所属的组而拥有的所有权限,请启动Django shell ...
user = User.objects.get(username='somename')
user.get_group_permissions()
这里列出的所有权限归因于他所属的组。
如果您需要更多粒度来检查烫发(例如,在特定对象上),请查看以下扩展名:http : //django-authority.readthedocs.org/en/latest/check_templates/
抱歉,“发掘”这篇文章,但我有一个与权限相关的问题,请参阅我的文章:Django:使用权限(perm)在模板中无法很好地应用逻辑
因为Arindam对这个概念非常满意,我希望他或其他人可以帮助我
当我在模板中寻找{{perms}}时,即使值是正确的,烫发也不适用。如果我寻找{{perms.randomization.can_randomize}},它返回False(或True),则返回对象,但权限列表不适用),这就是我的应用程序名为randomization的良好价值,并且我在我的随机化应用程序的一部分的Randomization模型(使用meta)中定义了can_randomize权限
我检查settings.py但所有接缝都没问题