Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django泛型.ListAPIView接受POST方法_Python_Django_Http - Fatal编程技术网

Python Django泛型.ListAPIView接受POST方法

Python Django泛型.ListAPIView接受POST方法,python,django,http,Python,Django,Http,我有一个Django视图,它扩展了泛型.ListAPIView。它可以很好地处理get请求,但是由于URL的字符限制,现在我需要通过POST发送请求。这是相同的请求,我唯一需要更改的是发布的方法。 我当前的代码非常简单: class MyClass(generics.ListAPIView): serializer_class = MySerializer paginate_by = 1 def get_queryset(self): queryset = SomeClass.obje

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

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

def get_queryset(self):
    queryset = SomeClass.objects.all()
    # do some filtering
如何向该类添加POST支持?

您可以使用并超越
create
方法来执行与
list
方法相同的操作。也许你可以做如下的事情:

class MyClass(generics.ListCreateAPIView):
    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)
但我建议使用指定的方法。

尝试以下方法:

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)

如果我理解正确,我不是舒尔。您是想用POST方法发送GET请求,还是想在类中添加POST方法?使用POST检索记录违反REST规范,不推荐使用。