【问题标题】:How to define permissions in Django without staff status?如何在没有员工身份的情况下在 Django 中定义权限?
【发布时间】:2015-02-06 12:04:15
【问题描述】:

我想授予某些用户创建文章的权限,但不为其分配员工身份。

原因是我不希望任何用户访问管理面板进行身份验证,就像将@staff_member_required 添加到视图时那样。相反,我只想将/add/article 链接添加到拥有此类权限的用户的个人资料中。

我怎样才能做到这一点?

【问题讨论】:

    标签: django django-permissions


    【解决方案1】:

    如果您使用的是传统的函数式视图,您可以这样做:

    def add_article(请求): 如果不是 request.user.has_perm('articles.add_article'): 返回 HttpResponseForbidden() # 现在只有有权限的用户才能到达这个 # 所以添加你的普通视图处理

    但是,我建议使用django.contrib.auth.decorators.permission_required 装饰器来代替上述方法:

    @permission_required('articles.add_article') def add_article(请求): # 你的正常视图处理

    如果您改用 CBV,您应该装饰 CBV 的 as_view() 方法(在您的 urls.py 中)或使用 django-braces 中的 PermissionRequiredMixinhttp://django-braces.readthedocs.org/en/latest/access.html#permissionrequiredmixin) - 或者只是自己做检查 CBV 的 dispatch() 方法。

    另外,在您的模板中将您的 add_article url 放入 perms 检查中,如下所示:

    {% if perms.articles.add_article %} 仅向具有 rpmission 的用户显示文章编辑的 url {% 万一 %}

    【讨论】:

    • 我使用过渡功能视图。很大的帮助。谢谢 Serafeim。
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2013-01-25
    相关资源
    最近更新 更多