如何在没有人员状态的Django中定义权限?
How to define permissions in Django without staff status?
我想授予某些用户创建文章的权限,但不向他们分配员工身份。
原因是我不希望任何用户访问管理面板进行身份验证,就像将 @staff_member_required
添加到视图时发生的那样。相反,我只想在拥有此类权限的用户的个人资料中添加 /add/article
link。
我怎样才能做到这一点?
如果您使用的是传统功能视图,您可以这样做:
def add_article(request):
if not request.user.has_perm('articles.add_article'):
return HttpResponseForbidden()
# Now only users that have the permission will reach this
# so add your normal view handling
但是,我建议使用 django.contrib.auth.decorators.permission_required
装饰器来代替上面的方法:
@permission_required('articles.add_article')
def add_article(request):
# your normal view handling
如果您正在使用 CBV,您应该装饰 CBV 的 as_view()
方法(在您的 urls.py
中)或使用 django-braces 中的 PermissionRequiredMixin
(http://django-braces.readthedocs.org/en/latest/access.html#permissionrequiredmixin) - 或者只是在 CBV 的 dispatch()
方法中进行自己的检查。
此外,在您的模板中将您的 add_article url 放入权限检查中,如下所示:
{% if perms.articles.add_article %}
Show url for article editing only to users that have the rpmission
{% endif %}
我想授予某些用户创建文章的权限,但不向他们分配员工身份。
原因是我不希望任何用户访问管理面板进行身份验证,就像将 @staff_member_required
添加到视图时发生的那样。相反,我只想在拥有此类权限的用户的个人资料中添加 /add/article
link。
我怎样才能做到这一点?
如果您使用的是传统功能视图,您可以这样做:
def add_article(request): if not request.user.has_perm('articles.add_article'): return HttpResponseForbidden() # Now only users that have the permission will reach this # so add your normal view handling
但是,我建议使用 django.contrib.auth.decorators.permission_required
装饰器来代替上面的方法:
@permission_required('articles.add_article') def add_article(request): # your normal view handling
如果您正在使用 CBV,您应该装饰 CBV 的 as_view()
方法(在您的 urls.py
中)或使用 django-braces 中的 PermissionRequiredMixin
(http://django-braces.readthedocs.org/en/latest/access.html#permissionrequiredmixin) - 或者只是在 CBV 的 dispatch()
方法中进行自己的检查。
此外,在您的模板中将您的 add_article url 放入权限检查中,如下所示:
{% if perms.articles.add_article %} Show url for article editing only to users that have the rpmission {% endif %}