【发布时间】:2016-11-20 18:02:56
【问题描述】:
我是 DRF 的新手,当我尝试在 DRF 中自定义 Permission 时遇到了以下问题。
假设我的 permissions.py 文件中有以下代码:
class GetPermission(BasePermission):
obj_attr = 'POITS'
def has_permission(self, request, view):
user = request.user
employee = Employee.objects.get(user=user)
# Return a dict which indicates whether the request user has the corresponding permissions
permissions = get_permission(employee.id)
return permissions[GetPermission.obj_attr]
在我看来,我想覆盖 GetPermission 类中的静态变量:
class AssignmentList(generics.ListCreateAPIView):
GetPermission.obj_attr = 'ASSIGNMENT'
permission_classes = (IsAuthenticated, IsStaff, GetPermission)
queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer
pagination_class = LargeResultsSetPagination
def perform_create(self, serializer):
employee = Employee.objects.get(user=self.request.user)
serializer.save(sender=employee, status=0, operatable=0)
但是,正如 DRF 的文档指出的那样:
权限检查总是在视图的最开始运行,在任何其他代码被允许继续之前。
那么我该怎么做,提前谢谢,任何想法都会受到欢迎,因为我是 DRF 的新鱼。
【问题讨论】:
-
我不明白你的问题。该权限类如何与在视图开始时运行不兼容?
-
对于不同的视图,我想使用具有不同 obj_attr 值的 GetPermission 类。
标签: python django rest permissions django-rest-framework