python - Django Rest Framework:如何使用 APIView 或 GenericAPIView 调用 check_object_permissions()
问题描述
我想只允许对象创建者能够看到他们的对象。
所以,我想验证用户是否等于created_by
对象的字段。
我仅使用APIView
或GenericAPIView
用于我的观点:
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()
方法永远不会被调用。
我试过的:
- 替换
APIView
为GenericAPIView
- 在视图中调用
check_object_permissions()
,之前return Response(serializer.data)
- 在视图中实现
get_object()
方法
这些解决方案都没有奏效。
我不明白该叫什么check_object_permissions()
。
欢迎任何帮助!
解决方案
您必须将 check_object_permission 函数替换为 has_object_permission
推荐阅读
- java - Solr 更新问题
- ruby-on-rails - 安装 json (1.8.1) 时出错,Bundler 无法继续
- angularjs - 显示 div 取决于使用 ng-show、ng-click、ng-init 的点击次数
- javascript - 简单的 Rails 应用程序 - 未捕获的 ReferenceError:$ 未定义
- android - web3j 和 web3js 中的签名不同?
- java - CalendarView 在片段中不起作用?安卓
- c# - 无法在 Azure DevOps 2019 通过代码(无权限)创建代理池
- flutter - 未定义命名参数“colors”。flutter
- java - 无法评估具有 [@xsi:type='ED'] 类型的 Xpath xpression
- amazon-web-services - DynamoDB GSI 分区包含大型集