Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django rest framework 如何在APIView中使用对象级权限?_Django Rest Framework - Fatal编程技术网

Django rest framework 如何在APIView中使用对象级权限?

Django rest framework 如何在APIView中使用对象级权限?,django-rest-framework,Django Rest Framework,我有一个权限类,用于检查obj.account是否等于request.user.profile.account: class IsOwner(permissions.BasePermission): def has_object_permission(self, request, view, obj): return request.user.profile.account == obj.account 这就是我的观点: class ContactDetailView(

我有一个权限类,用于检查obj.account是否等于request.user.profile.account:

class IsOwner(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        return request.user.profile.account == obj.account
这就是我的观点:

class ContactDetailView(APIView):
    permission_classes = (IsOwner, )

    def get(self, request, pk, format=None):
        contact = get_object_or_404(Contact, pk=pk)
        serializer = ContactSerializer(contact)

        return Response(
            serializer.data,
        )
但我没有得到允许的错误。它会毫无问题地返回联系人数据


我的错误在哪里?

您需要在响应之前调用
检查\u对象\u权限
方法:

class ContactDetailView(APIView):
    permission_classes = (IsOwner, )

    def get(self, request, pk, format=None):
        contact = get_object_or_404(Contact, pk=pk)
        serializer = ContactSerializer(contact)
        self.check_object_permissions(request, contact)

        return Response(
            serializer.data,
        )

请注意,默认情况下,泛型视图类已经调用了它。但是,由于您没有使用
retrieveapieview
,因此需要手动执行此操作。

我没有使用任何常规视图,因为我计划对视图进行一些自定义。谢谢你的回复,它成功了!