Django rest framework 如何在APIView中使用对象级权限?
我有一个权限类,用于检查obj.account是否等于request.user.profile.account: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(
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
,因此需要手动执行此操作。我没有使用任何常规视图,因为我计划对视图进行一些自定义。谢谢你的回复,它成功了!