Python django rest框架中使用POST方法发送信息的问题
大家好,我知道django rest框架: views.py: models.py: URL.py: 当我与邮递员一起发布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
('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)