我发送一个post request with data(使用requests.post('url', data=data)
):
data = {
'token':1234,
'data':{
'name':'test',
'etc':True,
}
}
在django中处理reguest.POST
时,我得到:
<QueryDict: {'token':[1234], 'data':['name', 'etc']} >
原因是什么?
原因是什么?
这就是QuerDict
的简单表示方式。这是因为在querystring和HTTP报头中,相同的键可以出现多次。因此,它将键映射到值。
如果你下标项[Django-doc],像request.POST['token']
它总是返回最后一个元素,如果你使用.getlist(…)
[Django-doc],它将返回一个包含所有项的列表:
request.POST['token']# 1234
request.POST.getlist('token')# ['1234']
此外,正如您所发现的,您不能将字典作为值传递。如果你想发送这个,你需要序列化它,例如作为一个字符串:
import json
data = {
'token':1234,
'data':json.dumps({
'name':'test',
'etc':True,
})
}
那么在接收端,你可以反序列化这些:
import json
json.loads(request.POST['data'])