【发布时间】:2017-12-30 00:27:53
【问题描述】:
我正在使用 DRF 来编写 API。我想为模型视图集中的每个视图赋予不同的权限。我有两组(客户和员工)。我在 permissions.py 中将它们过滤为 Isstaff 和 Iscustomer。
class Iscustomer(permissions.BasePermission):
def has_permission(self, request, view):
if request.user and request.user.groups.filter(name='customers'):
return True
return False
class Isstaff(permissions.BasePermission):
def has_permission(self, request, view):
if request.user and request.user.groups.filter(name='staff'):
return True
return False
我正在尝试使用 get_permissions 方法覆盖。
当我在self.permission_classes 中放置一个组时,它工作正常。
class cityviewset(viewsets.ModelViewSet):
queryset = city.objects.all()
serializer_class = citySerializer
def get_permissions(self):
if self.request.method == 'POST' or self.request.method == 'DELETE':
self.permission_classes = [Isstaff]
return super(cityviewset, self).get_permissions()
但是,当我尝试将多个组放入 self.permission_classes 时,它失败了。
def get_permissions(self):
if self.request.method == 'POST' or self.request.method == 'DELETE':
self.permission_classes = [Isstaff,Iscustomer,]
return super(cityviewset, self).get_permissions()
【问题讨论】:
-
失败是什么意思?有错误提示吗??
标签: django permissions django-rest-framework django-permissions role-based-access-control