首页 > 解决方案 > Django REST Framework - 如果不允许查看对象不工作返回错误?

问题描述

我正在为我的一个视图创建自定义 Django Rest Framework 权限,我只希望管理员和对象的所有者能够查看和编辑对象,因为其他人都返回异常错误。但是,如果 request.user 不是管理员或对象的所有者,我无法获得返回错误的自定义权限。

目前我在我的view.py


class ItemQuery(generics.RetrieveUpdateDestroyAPIView):
   queryset = Item.objects.all()
   serializer_class = ItemSerializer
   permission_classes = [IsOwnerOrReadOnly]
   lookup_field = 'name'

和我的permissions.py


from rest_framework.views import exception_handler

class IsOwnerOrReadOnly(permissions.basePermission):
   def has_object_permission(self, request, view, obj):
       if request.method in permissions.SAFE_METHODS:
           return True
       if obj.id.user = request.user or request.user.is_admin == True:
          return True
       else:
          return False
          response = exception-handler(self, request)
          response.status_code = 404
          return response

标签: pythondjangodjango-rest-framework

解决方案


消除

if request.method in permissions.SAFE_METHODS:
    return True

它在您检查所有者或管理员之前返回。


推荐阅读