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

使用requests.post()向API传递字典时嵌套phases字段丢失问题求助

问题原因

你调用requests.post时使用data参数传递字典,默认会以application/x-www-form-urlencoded格式编码请求体,该格式仅支持平层键值对,无法正确序列化嵌套的字典、列表结构,因此phases这类嵌套字段无法被后端正常解析。而你在Insomnia中发送的是JSON格式请求,本身支持嵌套结构,所以可以正常运行。

可行解决方案

  • 优先修改requests请求参数,将data=data改为json=data:
# 修改后的请求代码
answer = requests.post(
    url, 
    json=data, # 替换原来的data参数
    headers={'Authorization': 'Token ' + request.session['user_token']}
)

使用json参数后,requests会自动将字典序列化为符合规范的JSON字符串,同时自动添加Content-Type: application/json请求头,和Insomnia的请求格式完全一致,嵌套字段可以正常传递。

  • 若接口要求必须使用表单格式提交,可手动将嵌套结构序列化为JSON字符串作为值传递,后端接收后再反序列化还原结构即可,该方案适配性较差,仅作为备选。
  • 后端接收JSON格式请求时,需要从请求体中读取数据解析,不能直接转换表单格式的请求对象,以Django为例:
import json
# 从请求body读取JSON数据
flow_data = json.loads(request.body)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:10