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

使用Python requests向Django/DRF上传文件报No file was submitted错如何解决

问题原因及修复方案

1. 文件字段名不匹配

你当前上传文件的字典key为aapl,但接口报错明确要求接收名为ohlc的文件字段,首先需要修改文件字典的键:

test_file = {
    "ohlc": open("./ohlc_aapl.json", "rb") # 将键从aapl改为接口要求的ohlc
}

2. requests同时传files和json参数存在冲突

requests库中,json参数会自动设置请求头Content-Type: application/json,而files参数要求请求头为multipart/form-data,二者同时传入会出现请求格式冲突,导致后端无法正确解析参数。根据你的使用场景可选三种修复方案:

方案A:仅上传本地JSON文件,无需额外传payload

如果你只需要上传ohlc_aapl.json文件,不需要额外提交payload里的数据集,直接去掉json=payload参数即可:

r = requests.post(test_url, files=test_file)

方案B:需要同时传文件+payload数据集

如果要同时传递文件和结构化数据,需要把payload序列化为字符串,放到data参数中传递,同时在后端对应字段配置JSONField接收序列化后的JSON字符串即可:

import json

r = requests.post(
    test_url, 
    files=test_file,
    data={"payload": json.dumps(payload)}
)

方案C:不需要传文件,直接提交JSON数据集

如果你实际不需要上传本地JSON文件,只是要提交payload里的结构化数据,直接删除files参数即可:

r = requests.post(test_url, json=payload)

额外注意

  • 文件打开后记得在请求完成后调用close()方法关闭,避免资源泄漏,更推荐使用with上下文管理器打开文件
  • 可打印r.request.headers和r.request.body排查请求参数是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:04