gpt4 book ai didi

python - 自定义权限未传递给通用 View django rest

转载 作者:行者123 更新时间:2023-12-01 00:06:47 25 4
gpt4 key购买 nike

我正在编写自定义权限并在通用 View 中继承,但它不起作用,它返回

TypeError: Cannot cast AnonymousUser to int. Are you trying to use it in place of User?

而不是执行此操作所需的用户

我的自定义权限如下

class IsOwnedByUser(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
message = {'detail': 'User required to perform this action'}
return obj.user == request.user

views.py

class OrderAddressView(generics.ListCreateAPIView):
queryset = OrderAddress.objects.all()
serializer_class = OrderAddressSerializer
permission_classes = (IsOwnedByUser,)

def perform_create(self, serializer):
serializer.save(user=self.request.user)

def get_queryset(self):
return OrderAddress.objects.filter(user=self.request.user)

顺便说一句,当我像这样使用时,它可以与默认的其余框架权限类一起正常工作

permission_class = (permissions.IsAuthenticated,)

但是在我的自定义许可下它不起作用(任何人都可以告诉为什么会这样吗?提前致谢!

最佳答案

实际上,正如 Pavan Kumar 告诉您的那样,您应该同时使用 (permissions.IsAuthenticated, IsOwnedByUser)但如果您只想使用一种权限,您可以创建自己的权限:

class IsAuthenticatedAndOwner(permissions.BasePermission):
message = 'User required to perform this action'

def has_permission(self, request, view):
return request.user and request.user.is_authenticated

def has_object_permission(self, request, view, obj):
return obj.user == request.user

关于python - 自定义权限未传递给通用 View django rest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59926300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com