Djangogenerics.ListAPIView接受POST方法

时间:2019-01-21 14:34:22

标签: python django http

我有一个扩展generics.ListAPIView的Django视图。它可以很好地与get请求一起使用,但是由于URL的字符限制,现在我需要通过POST发送请求。这是相同的请求,我唯一需要更改的是POST方法。 我当前的代码非常简单:

class MyClass(generics.ListAPIView):
serializer_class = MySerializer
paginate_by = 1

def get_queryset(self):
    queryset = SomeClass.objects.all()
    # do some filtering

如何为此类添加POST支持?

2 个答案:

答案 0 :(得分:1)

您可以使用ListCreatAPIView并改写create方法来执行与list方法相同的操作。也许您可以执行以下操作:

class MyClass(generics.ListAPIView):
    serializer_class = MySerializer
    paginate_by = 1

    def get_queryset(self):
        queryset = SomeClass.objects.all()
        # do some filtering

    def create(self, request, *args, **kwargs):
        # maybe replace request.method with 'GET'
        self.list(request, *args, **kwargs)

但是我建议使用指定的方法。

答案 1 :(得分:1)

尝试一下:

class MyClass(generics.ListAPIView):
    serializer_class = MySerializer
    paginate_by = 1

    def get_queryset(self):
        queryset = SomeClass.objects.all()
        # do some filtering


    def post(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)