Django返回一个数组而不是字典(rest-api-framework)



我发送一个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'])

最新更新