Umu*_*kun 3 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
Run Code Online (Sandbox Code Playgroud)
这是我的观点:
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,
)
Run Code Online (Sandbox Code Playgroud)
但我没有收到权限错误。它毫无问题地返回联系数据。
我的错误在哪里?
您需要check_object_permissions在响应之前调用方法:
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,
)
Run Code Online (Sandbox Code Playgroud)
请注意,通用视图类已经默认调用它。但由于您不使用,因此RetrieveAPIView需要手动执行。
| 归档时间: |
|
| 查看次数: |
2309 次 |
| 最近记录: |