在此代码中,Django将检查元组 permission_required 中的所有权限,以及拥有所有权限的用户是否可以访问该视图。如果用户在给定列表或元组中拥有任何权限,我想提供视图。例如:在这种特殊情况下,如果用户只有 polls.can_open 权限,我想提供视图
from django.contrib.auth.mixins import PermissionRequiredMixin
class MyView(PermissionRequiredMixin, View)
permission_required = ('polls.can_open', 'polls.can_edit')
答案 0 :(得分:2)
默认情况下,mixin不支持OR条件,但您可以简单地覆盖has_permission()
方法来自行执行权限检查。类似的东西:
" "
答案 1 :(得分:1)
文档是django-braces。演示:
from django.views.generic import TemplateView
from braces import views
class SomeProtectedView(views.LoginRequiredMixin,
views.MultiplePermissionsRequiredMixin,
TemplateView):
#required
permissions = {
"all": ("blog.add_post", "blog.change_post"),
"any": ("blog.delete_post", "user.change_user")
}
这个视图mixin可以通过将强制权限属性设置为dict来处理多个权限,其中任意和/或全部键都可以列入权限列表或元组。 all键要求request.user拥有所有指定的权限。 any键要求request.user至少具有一个指定的权限。