【发布时间】:2020-09-03 19:34:29
【问题描述】:
我有多个具有多个权限的用户(管理员和用户)。示例:管理员可以看到边栏 a、b,但用户只能看到边栏 c。
我如何使用 Django 实现它?
谢谢
【问题讨论】:
标签: django permissions django-templates
我有多个具有多个权限的用户(管理员和用户)。示例:管理员可以看到边栏 a、b,但用户只能看到边栏 c。
我如何使用 Django 实现它?
谢谢
【问题讨论】:
标签: django permissions django-templates
如果您想将用户权限应用于特定操作,例如列表、添加、删除等...您可以使用此功能,从逻辑上讲,用户必须事先分配权限,这可以从管理面板完成,如果用户已经有权限分配,只需从视图或模板中使用它们,如下所示:
views.py
@method_decorator(permission_required('model_name.add_model_name', reverse_lazy('forbbiden')), name="dispatch")
class Add_Model_Name(CreateView):
model = Model_Name
.
.
.
template:
{% if perms.add_model_name %}
<sidebar a>
<sidebar b>
{% endif %}
{% if not perms.add_model_name %}
<sidebar c>
{% endif %}
其中 add_model_name 是指您要检查的权限的名称, 用户登录后,可以直接访问模板中的 perms 变量,请求特定权限,例如:
{% if perms.add_model_name %} # if have permission to add a model
{% if perms.delete_model_name %} # if havepermission to delete a model
{% if perms.your_own_permission %} #if have a specific permission created by you
会是什么样子:
{% if perms.is_admin %}
<sidebar a>
<sidebar b>
{% endif %}
{%if perms.is_user %}
<sidebar c>
{% endif %}
【讨论】: