Python django rest框架中使用POST方法发送信息的问题

Python django rest框架中使用POST方法发送信息的问题,python,django,django-rest-framework,Python,Django,Django Rest Framework,大家好,我知道django rest框架: views.py: models.py: URL.py: 当我与邮递员一起发布('name'、'store\u name'、'description'、'fav')时,存储的数据没有任何细节 我想知道问题出在哪里 我还删除了models.py中的(blank=True),没有保存任何内容 啊,我看了你的附件,发现了什么问题。 您正在将数据作为URL中的GET参数发送。例如。https://localhost:8000?name=lorem&storen

大家好,我知道django rest框架:

views.py:

models.py:

URL.py:

当我与邮递员一起发布
('name'、'store\u name'、'description'、'fav')
时,存储的数据没有任何细节

我想知道问题出在哪里

我还删除了models.py中的
(blank=True)
,没有保存任何内容


啊,我看了你的附件,发现了什么问题。 您正在将数据作为URL中的GET参数发送。例如。https://localhost:8000?name=lorem&storename=lorem2.

但是,您已将视图方法定义为预期POST请求:

class PostModelData(APIView):
    #Use this method for POST requests
    def post(self, request):
        pass

    #Use this method for GET requests
    def get(self, request):
        pass
不过,在这种情况下,当您希望从用户处接收数据并保存它时,POST请求是正确的选择,您只是将数据放在了错误的位置

而是这样做:

1:在视图中更改代码

class PostModelData(APIView):
    def post(self, request):
        #If you want to send MULTIPLE entries per request
        serializer = BookModelSerializers(data=request.data, many=True)
        #If you want to send ONE entry per request
        serializer = BookModelSerializers(data=request.data, many=False)
2:转到邮递员,并执行以下步骤

3:从url中删除所有参数,这样您就可以http://localhost:8000/api/v1/postmodeldata/

4:在URL旁边,确保已选择POST

5:在URL栏下,单击
Body

6:在单选按钮中,更改为
raw
。然后在它旁边的下拉菜单中选择
JSON

7:在文本区写下如下图片:


8:单击“发送”,您应该会收到服务器的201响应。

啊,我查看了您所附的图片,发现了什么问题。 您正在将数据作为URL中的GET参数发送。例如。https://localhost:8000?name=lorem&storename=lorem2.

但是,您已将视图方法定义为预期POST请求:

class PostModelData(APIView):
    #Use this method for POST requests
    def post(self, request):
        pass

    #Use this method for GET requests
    def get(self, request):
        pass
不过,在这种情况下,当您希望从用户处接收数据并保存它时,POST请求是正确的选择,您只是将数据放在了错误的位置

而是这样做:

1:在视图中更改代码

class PostModelData(APIView):
    def post(self, request):
        #If you want to send MULTIPLE entries per request
        serializer = BookModelSerializers(data=request.data, many=True)
        #If you want to send ONE entry per request
        serializer = BookModelSerializers(data=request.data, many=False)
2:转到邮递员,并执行以下步骤

3:从url中删除所有参数,这样您就可以http://localhost:8000/api/v1/postmodeldata/

4:在URL旁边,确保已选择POST

5:在URL栏下,单击
Body

6:在单选按钮中,更改为
raw
。然后在它旁边的下拉菜单中选择
JSON

7:在文本区写下如下图片:


8:单击发送,您应该会收到服务器的201响应。

您可以添加一个使用PostMani发送的数据示例吗?如果我从views.py中删除(response(response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)),我会收到500个错误更改它,使您收到500个错误,然后在Postman中发送请求。当您得到响应时,单击“预览”,您将看到它呈现为HTML。然后您可以看到错误的回溯。将错误张贴在此处,否则您将自行解决。它显示了以下内容(AssertionError at/api/v1/postmodeldata/期望从视图中返回响应、HttpResponse或HttpStreamingResponse,但收到了一条消息:如果i remove(响应(serializer.errors,status=status.HTTP_400_BAD_请求))在views.py中,我得到一个500错误。更改它,使您得到500个错误,然后用邮递员发送一个请求。当您得到响应时,单击“预览”,您将看到它作为呈现的HTML。然后您可以看到错误的回溯。将错误发布在此处,或者您自己来解决。它显示了这一点(位于/api/v1/postmodeldata/的AssertionError期望从视图返回响应、HttpResponse或HttpStreamingResponse,但收到一个
class BookModelSerializers(serializers.ModelSerializer):

    class Meta:
        model = Book
        fields = '__all__'

    def create(self, validated_data):
        book = Book.objects.create(**validated_data)
        book.save()
        return book
class PostModelData(APIView):
    #Use this method for POST requests
    def post(self, request):
        pass

    #Use this method for GET requests
    def get(self, request):
        pass
class PostModelData(APIView):
    def post(self, request):
        #If you want to send MULTIPLE entries per request
        serializer = BookModelSerializers(data=request.data, many=True)
        #If you want to send ONE entry per request
        serializer = BookModelSerializers(data=request.data, many=False)