Django的test client可讓您執行POST
請求並將請求數據指定爲dict
。Django的測試客戶端具有多個數據鍵值
但是,如果我想發送模擬<select multiple>
或<input type="checkbox">
字段的數據,我需要爲數據dict
中的單個密鑰發送多個值。
我該怎麼做?
Django的test client可讓您執行POST
請求並將請求數據指定爲dict
。Django的測試客戶端具有多個數據鍵值
但是,如果我想發送模擬<select multiple>
或<input type="checkbox">
字段的數據,我需要爲數據dict
中的單個密鑰發送多個值。
我該怎麼做?
最簡單的方法是爲list
或tuple
在dict
指定值:
client.post('/foo', data={"key": ["value1", "value2"]})
或者您可以使用一個MultiValueDict
作爲值。
剛剛遇到這個問題!不幸的是,你的答案不適用於我,在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')
什麼Django表單字段應該是使用清潔/驗證'list'或者你通過client.post發送值的'tuple'? – Medorator 2014-08-09 15:21:23