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

Django单元测试中如何POST含重复键的表单数据?

解决Django测试中提交多键POST请求的问题

Django测试客户端的post方法支持两种方式提交含重复键的表单数据,完全适配你遇到的场景:

方法一:使用元组列表构造数据

直接用包含键值对元组的列表替代字典,允许同一个键出现多次:

data = [
    ('foo', 'bar'),
    ('color', 'orange'),
    ('color', 'blue')
]
self.client.post(url, data=data)

这种方式最直观,完全贴合HTTP表单提交的原始结构,后端能正确解析到多个color值。

方法二:使用Django的QueryDict构造数据

Django内置的QueryDict专门处理HTTP请求中的多键参数,原生支持同一个键对应多个值:

from django.http import QueryDict

# 创建可修改的QueryDict实例
data = QueryDict('', mutable=True)
data['foo'] = 'bar'
# 用setlist方法设置同一个键的多个值
data.setlist('color', ['orange', 'blue'])

self.client.post(url, data=data)

这种方式更贴近Django后端处理请求的逻辑,适合需要动态添加多键参数的场景。

这两种方法都无需修改底层应用,直接适配现有接口的参数要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:01:13