Django RF,验证对象所有者时出错(错误:字段"id"需要一个数字,但得到.匿名用户 )



我有一个用户创建的对象,当其他用户试图访问该对象时,它不应该允许它。我希望Django会以you are not authenticated的形式抛出错误注销后,当匿名用户试图访问对象Django时,会抛出如下所述的错误。

错误

TypeError at /PoUserTracking/
Field 'id' expected a number but got <django.contrib.auth.models.AnonymousUser object at 0x0445F160>.

VIEWS.PY

class PoUserTracking(generics.ListAPIView):
serializer_class = NewPoSerializer
permission_classes = [IsAuthor]
def get_queryset(self):
user = self.request.user
return Po.objects.filter(user=user)

许可证.PY

class IsAuthor(permissions.BasePermission):
def has_object_permission(self, request, view, obj):

return obj.author == request.user

您需要首先检查用户是否通过了身份验证

from rest_framework import permissions

class IsAuthor(permissions.IsAuthenticated):
def has_object_permission(self, request, view, obj):
return self.has_permission(request, view) and obj.author == request.user

只需发出请求.user.id//这肯定会得到解决。。

最新更新