Где мои данные JSON во входящем запросе Django? - PullRequest
137 голосов
/ 30 июля 2009

Я пытаюсь обработать входящие запросы JSON / Ajax с помощью Django / Python.

request.is_ajax() равно True по запросу, но я понятия не имею, где находится полезная нагрузка с данными JSON.

request.POST.dir содержит это:

['__class__', '__cmp__', '__contains__', '__copy__', '__deepcopy__', '__delattr__',
 '__delitem__', '__dict__', '__doc__', '__eq__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__',
 '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__setattr__', '__setitem__', '__str__', '__weakref__', '_assert_mutable', '_encoding', 
'_get_encoding', '_mutable', '_set_encoding', 'appendlist', 'clear', 'copy', 'encoding', 
'fromkeys', 'get', 'getlist', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 
'keys', 'lists', 'pop', 'popitem', 'setdefault', 'setlist', 'setlistdefault', 'update', 
'urlencode', 'values']

Очевидно, что в запросе нет ключей.

Когда я смотрю на POST в Firebug , в запросе отправляются данные JSON.

Ответы [ 12 ]

0 голосов
/ 26 марта 2015

Используя Angular, вы должны добавить заголовок к запросу или добавить его в конфигурацию модуля. заголовки: {'Content-Type': 'application/x-www-form-urlencoded'}

$http({
    url: url,
    method: method,
    timeout: timeout,
    data: data,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
0 голосов
/ 30 июля 2009

request.POST - это словарь-подобный объект, так что просто внесите в него индекс с помощью синтаксиса dict.

Предполагая, что ваше поле формы fred, вы можете сделать что-то вроде этого:

if 'fred' in request.POST:
    mydata = request.POST['fred']

В качестве альтернативы используйте объект формы для работы с данными POST.

...