首页 > 解决方案 > Django Rest Framework:如何使用 APIView 或 GenericAPIView 调用 check_object_permissions()

问题描述

我想只允许对象创建者能够看到他们的对象。

所以,我想验证用户是否等于created_by对象的字段。

我仅使用APIViewGenericAPIView用于我的观点:

class CertificateDetailApi(APIView):

    permission_classes = [IsCreator]

    class OutputSerializer(serializers.ModelSerializer):
        class Meta:
            model = Certificate
            fields = ('__all__')

    def get(self, request, pk):
        certificate = get_object_or_404(Certificate, pk=pk)
        serializer = self.OutputSerializer(certificate)
        return Response(serializer.data)

这是我的权限:

class IsCreator(BasePermission):
    def check_object_permissions(self, request, view, obj):
        return obj.created_by == request.user

我的问题是该check_object_permissions()方法永远不会被调用。

我试过的:

这些解决方案都没有奏效。

我不明白该叫什么check_object_permissions()

欢迎任何帮助!

标签: pythondjangodjango-rest-frameworkdjango-views

解决方案


您必须将 check_object_permission 函数替换为 has_object_permission


推荐阅读