【问题标题】:Make a dynamic sidebar based on permissions of users Django根据用户Django的权限制作动态侧边栏
【发布时间】:2020-09-03 19:34:29
【问题描述】:

我有多个具有多个权限的用户(管理员和用户)。示例:管理员可以看到边栏 a、b,但用户只能看到边栏 c。

我如何使用 Django 实现它?

谢谢

【问题讨论】:

    标签: django permissions django-templates


    【解决方案1】:

    如果您想将用户权限应用于特定操作,例如列表、添加、删除等...您可以使用此功能,从逻辑上讲,用户必须事先分配权限,这可以从管理面板完成,如果用户已经有权限分配,只需从视图或模板中使用它们,如下所示:

    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 %}
    

    【讨论】:

    • 非常感谢您的反馈
    • @Alami 对您有帮助吗?我建议你查看 Django 的官方文档。祝你好运
    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2022-01-26
    • 2021-09-07
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多