Python 基于类的视图中的方法装饰器不工作

Python 基于类的视图中的方法装饰器不工作,python,django,django-rest-framework,decorator,django-class-based-views,Python,Django,Django Rest Framework,Decorator,Django Class Based Views,我正在使用基于类的视图和应用权限类,仅在使用方法装饰器的POST方法上使用。直到昨天它还在工作,但突然停止了。我找不到问题 class OfferCreateListView(ListCreateAPIView): serializer_class = OfferSerializer queryset = Offers.objects.filter(user__isnull=True) @method_decorator(permission_classes((IsAu

我正在使用基于类的视图和应用权限类,仅在使用方法装饰器的POST方法上使用。直到昨天它还在工作,但突然停止了。我找不到问题

class OfferCreateListView(ListCreateAPIView):
    serializer_class = OfferSerializer
    queryset = Offers.objects.filter(user__isnull=True)

    @method_decorator(permission_classes((IsAuthenticated,)))
    @method_decorator(authentication_classes((BasicAuthentication, SessionAuthentication, TokenAuthentication,)))
    def post(self, request, *args, **kwargs):
        return super(OfferCreateListView, self).post(request, *args, **kwargs)

我做错了什么。是否有任何设置使其工作???

权限类和身份验证类装饰器是为基于函数的视图设计的。我还没有完全遵循rest框架代码,但是我很惊讶它直到昨天才开始工作——我不知道装饰器是用于基于类的视图的

相反,在类上设置属性。因为您只希望权限类应用于post请求,所以听起来像是您想要的


permission\u类
authentication\u类
装饰器是为基于函数的视图设计的。我还没有完全遵循rest框架代码,但是我很惊讶它直到昨天才开始工作——我不知道装饰器是用于基于类的视图的

相反,在类上设置属性。因为您只希望权限类应用于post请求,所以听起来像是您想要的


我想应用POST方法而不是GET方法…这就是我使用方法decoratorSorry的原因,我第一次读到你的问题时没有发现这一点。在这种情况下,我认为您需要
IsAuthenticatedOreadOnly
权限类。我想在POST方法上应用,而不是在GET方法上应用……这就是我使用方法装饰的原因。对不起,我第一次读到您的问题时没有发现这一点。在这种情况下,我认为您需要
IsAuthenticatedOrReadOnly
权限类。“它突然停止”不是很好的描述。。。发生了什么事?错误?无效结果?@Sayse不知道…但我可以在没有身份验证的情况下发布..“突然停止”不是很好的描述。。。发生了什么事?错误?无效结果?@Sayse不知道…但我可以在没有身份验证的情况下发布。。
class OfferCreateListView(ListCreateAPIView):
    permission_classes = (IsAuthenticatedOrReadOnly,)
    authentication_classes = (BasicAuthentication, SessionAuthentication, TokenAuthentication,)
    serializer_class = OfferSerializer
    queryset = Offers.objects.filter(user__isnull=True)