Django 的测试客户端允许您执行POST
请求并将请求数据指定为dict
.
但是,如果我想发送模拟<select multiple>
或<input type="checkbox">
字段的数据,我需要为 data 中的单个键发送多个值dict
。
我该怎么做呢?
The simplest way is to specify the values as a list
or tuple
in the dict
:
client.post('/foo', data={"key": ["value1", "value2"]})
Alternatively you can use a MultiValueDict
as the value.
刚碰到这个问题!不幸的是,您的答案对我不起作用,在FormView
我发布的内容中,它只会提取其中一个值,而不是所有值
您还应该能够手动构建查询字符串并使用内容类型发布它x-www-form-urlencoded
some_str = 'key=value1&key=value2&test=test&key=value3'
client.post('/foo/', some_str, content_type='application/x-www-form-urlencoded')
from django.core.urlresolvers import reverse
from django.utils.datastructures import MultiValueDict
from django.utils.http import urlencode
form_data = {'username': 'user name',
'address': 'street',
'allowed_hosts': ["host1", "host2"]
}
response = client.post(reverse('new_user'),
urlencode(MultiValueDict(form_data), doseq=True),
content_type='application/x-www-form-urlencoded')