gpt4 book ai didi

python - 在 Django 中形成 POST 字典时忽略请求中的正文

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:19 25 4
gpt4 key购买 nike

我正在使用从 POST 数据中获取整数的 Django 服务器。如果我通过 GET 发送整数没有问题,但通过 POST 发送时它会被丢弃。

我运行服务器:

./manage.py runserver 0.0.0.0:8000

然后生成 POST 请求:

curl -X POST -H "Content-Type: application/json" -d '{"myInt":4}' "http://0.0.0.0:8000/myURL/"

我在 View 中使用 PDB,这是我通过以下命令获得的结果:

request.method
> 'POST'
request.body
> '{"myInt":4}'
request.POST
> <QueryDict: {}>

我使用@csrf_exempt 作为 View 的装饰器,只是为了确保不会造成任何问题。

目前令我感到困惑的是 request.POST 不包含 myInt,我的 POST 请求格式不正确吗?

最佳答案

您的帖子请求发送的是 JSON 而不是 application/x-www-form-urlencoded

如果您查看 django docs about HttpRequest.POST .

包含所有给定 HTTP POST 参数的类似字典的对象,前提是请求包含表单数据。请参阅下面的 QueryDict 文档。如果您需要访问请求中发布的原始数据或非表单数据,请改为通过 HttpRequest.body 属性进行访问。

您需要 POST 表单编码数据。我没有对此进行测试,也有一段时间没有使用 curl,但我相信以下内容应该有效。

curl -X POST -H "Content-Type: application/x-www-form-urlencoded"-d "myInt=4""http://0.0.0.0:8000/myURL/"

关于python - 在 Django 中形成 POST 字典时忽略请求中的正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23099868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com