【发布时间】:2015-02-06 12:04:15
【问题描述】:
我想授予某些用户创建文章的权限,但不为其分配员工身份。
原因是我不希望任何用户访问管理面板进行身份验证,就像将@staff_member_required 添加到视图时那样。相反,我只想将/add/article 链接添加到拥有此类权限的用户的个人资料中。
我怎样才能做到这一点?
【问题讨论】:
我想授予某些用户创建文章的权限,但不为其分配员工身份。
原因是我不希望任何用户访问管理面板进行身份验证,就像将@staff_member_required 添加到视图时那样。相反,我只想将/add/article 链接添加到拥有此类权限的用户的个人资料中。
我怎样才能做到这一点?
【问题讨论】:
如果您使用的是传统的函数式视图,您可以这样做:
def add_article(请求): 如果不是 request.user.has_perm('articles.add_article'): 返回 HttpResponseForbidden() # 现在只有有权限的用户才能到达这个 # 所以添加你的普通视图处理但是,我建议使用django.contrib.auth.decorators.permission_required 装饰器来代替上述方法:
如果您改用 CBV,您应该装饰 CBV 的 as_view() 方法(在您的 urls.py 中)或使用 django-braces 中的 PermissionRequiredMixin(http://django-braces.readthedocs.org/en/latest/access.html#permissionrequiredmixin) - 或者只是自己做检查 CBV 的 dispatch() 方法。
另外,在您的模板中将您的 add_article url 放入 perms 检查中,如下所示:
{% if perms.articles.add_article %} 仅向具有 rpmission 的用户显示文章编辑的 url {% 万一 %}【讨论】: