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

Django APITestCase测试POST接口报category字典嵌套数据错误如何解决

问题原因

Django REST Framework 的测试客户端默认使用multipart/form-data格式发送POST请求,这种格式本身不支持嵌套字典、嵌套列表这类复杂结构,你提交的测试数据中category是字典类型、contacts和branches是嵌套字典的列表类型,不符合multipart格式的要求,所以触发报错。

修复方法

仅需要在调用post方法时新增format='json'参数即可,修改后的测试代码如下:

# 仅修改post请求行,其余代码保持不变
self.response = self.client.post(self.course_url, data, format='json')

指定format='json'后,测试客户端会自动将Python字典类型的测试数据序列化为JSON字符串,同时将请求头的Content-Type自动设置为application/json,后端接口即可正常解析嵌套的复杂数据结构。

补充说明

如果你的接口需要同时接收文件上传和复杂嵌套参数,不能直接使用JSON格式,此时需要将嵌套参数手动扁平化处理后再用multipart格式提交,当前场景不需要上传文件,加format='json'即可完全解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:24:05