Django从JSON数据创建一个QueryDict

时间:2016-06-20 14:43:10

标签: python django rest

我使用此代码将一些数据发布到Django支持的站点:

url = "http://example.com:8080/api/v1/data/"
request = {"info": "", "data": [{"extra": 0, "amount": 100, "id": "10000000016"}, {"extra": 0, "amount": 100, "id": "10000000002"}]}
opener = urllib2.build_opener()
opener.addheaders = [("Authorization", "Token "+self.token), 
                     ("Accept", "application/json"), 
                     ("Content-Type", "application/json; charset=UTF-8")]
opener.open(url, json.dumps(request))

然而,当我在Django中读取数据时,它已将其解析为QueryDict

Raw data received: <QueryDict: {u'{"info": "", ... 0002"}]}': [u'']}>

原始数据直接从request.data获取,作为从urls.py路由调用的函数。

从Android应用中发布相同类型的数据时,它可以正常工作。原始数据是一个字符串,可以从JSON中正确解析。

1 个答案:

答案 0 :(得分:0)

正如@dhke在评论中所说,问题是urllib2默认使用application/x-www.form-urlencoded。在线快速搜索给了我这段代码:

r = urllib.Request(url, data=json.dumps(request), headers={..})
urllib2.urlopen(req)

按预期工作。