You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Requests向DRF服务器发送POST请求遇格式异常求助

问题原因与解决方法

问题根源

你用json.dumps(Boxes)把列表转成了JSON字符串,再通过data参数以表单格式发送给DRF服务器。DRF收到的是表单中的字符串值,所以会显示带转义符的格式——这是因为JSON字符串里的双引号在表单传输时被转义,服务器解析后就成了带\"的字符串,而非原生列表结构。

解决方法

方法1:使用json参数发送请求(推荐)

requests库的json参数会自动把Python对象序列化为JSON格式,并设置正确的Content-Type: application/json请求头,DRF能直接解析为列表类型:

Boxes = [{"X": 2423, "Y": 532, "W": 7456, "H": 2345}]

url = "http://art1x.pythonanywhere.com/snippets/1/"
username = ""
password = ""
data = {"Boxes": Boxes}
response = requests.put(url, auth=(username, password), json=data)
print(response.status_code)

方法2:手动构造JSON请求(仅作参考)

如果坚持用data参数,需要把整个请求体转成JSON字符串,并设置请求头:

import json

Boxes = [{"X": 2423, "Y": 532, "W": 7456, "H": 2345}]

url = "http://art1x.pythonanywhere.com/snippets/1/"
username = ""
password = ""
data = json.dumps({"Boxes": Boxes})
headers = {"Content-Type": "application/json"}
response = requests.put(url, auth=(username, password), data=data, headers=headers)
print(response.status_code)

验证

修改后,DRF服务器收到的Boxes会是原生列表[{"X": 2423, "Y": 532, "W": 7456, "H": 2345}],而非带转义符的字符串。

内容的提问来源于stack exchange,提问作者Artemii Khristich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:27:30