я использую этот код, чтобы получить возможность отправлять некоторые данные на сайт в Django с питанием:Django делает QueryDict из данных JSON
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.
'POST'ed необработанные данные должны быть в' request.body' ([Django docs] (https://docs.djangoproject.com/ja/1.9/ref/request-response/#django.http.HttpRequest. тело)). – C14L
Какой тип содержимого отображается на стороне django? Django должен заполнять запрос dict только в том случае, если вход является одним из «multipart/form-data» или «application/x-www.form-urlencoded». 'urllib2' автоматически устанавливает' 'application/x-www.form-urlencoded', и я не уверен, как это взаимодействует с установкой' addheaders' на открытии. – dhke
@dhke Как узнать тип контента, который появляется на стороне django? –