Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django根据JSON数据进行查询_Python_Django_Rest - Fatal编程技术网

Python Django根据JSON数据进行查询

Python Django根据JSON数据进行查询,python,django,rest,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.addhea

我使用此代码将一些数据发布到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
,该函数是从
url.py
路由调用的


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

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

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

它按预期工作。

POST
ed原始数据应该在
request.body
()中。django端显示的内容类型是什么?Django应仅在输入为
多部分/表单数据
应用程序/x-www.form-urlencoded
之一时填写查询记录
urllib2
自动设置“application/x-www.form-urlencoded”,我不确定这与在开场白上设置
addheaders
有什么关系。@dhke我如何才能找到django端出现的内容类型?@BartFriederichs是你的朋友,在那里。@C14L我无法阅读
请求.body
,因为它给了我一个“错误请求”错误(HTTP 400)。