Где мои данные JSON во входящем запросе Django?

Используйте "\n":

document.write("\n");

Обратите внимание: он должен быть окружен двойными кавычками, чтобы интерпретировать его как новую строку. Нет, это не так.

141
задан Flimm 28 January 2016 в 16:30
поделиться

4 ответа

Если вы отправляете JSON в Django, я думаю, вам нужен request.body ( request.raw_post_data в Django <1.4). Это даст вам необработанные данные JSON, отправленные по почте. Оттуда вы можете обрабатывать его дальше.

Вот пример использования JavaScript, jQuery , jquery-json и Django.

JavaScript:

var myEvent = {id: calEvent.id, start: calEvent.start, end: calEvent.end,
               allDay: calEvent.allDay };
$.ajax({
    url: '/event/save-json/',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: $.toJSON(myEvent),
    dataType: 'text',
    success: function(result) {
        alert(result.Result);
    }
});

Django:

def save_events_json(request):
    if request.is_ajax():
        if request.method == 'POST':
            print 'Raw Data: "%s"' % request.body   
    return HttpResponse("OK")

Django <1.4:

  def save_events_json(request):
    if request.is_ajax():
        if request.method == 'POST':
            print 'Raw Data: "%s"' % request.raw_post_data
    return HttpResponse("OK")
219
ответ дан 23 November 2019 в 22:41
поделиться

request.POST is just a dictionary-like object, so just index into it with dict syntax.

Assuming your form field is fred, you could do something like this:

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

Alternately, use a form object to deal with the POST data.

-4
ответ дан 23 November 2019 в 22:41
поделиться

Полезные данные HTTP POST - это просто набор байтов. Django (как и большинство фреймворков) декодирует его в словарь либо из параметров в кодировке URL, либо из многостраничной кодировки MIME. Если вы просто выгружаете данные JSON в содержимое POST, Django не декодирует их. Либо сделайте декодирование JSON из полного содержимого POST (не из словаря); или поместите данные JSON в составную оболочку MIME.

Короче говоря, покажите код JavaScript. Кажется, проблема здесь.

5
ответ дан 23 November 2019 в 22:41
поделиться

У меня была такая же проблема. Я отправлял сложный ответ JSON, и я не мог прочитать свои данные с помощью словаря request.POST.

Мои данные JSON POST:

//JavaScript code:
//Requires json2.js and jQuery.
var response = {data:[{"a":1, "b":2},{"a":2, "b":2}]}
json_response = JSON.stringify(response); // proper serialization method, read 
                                          // http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
$.post('url',json_response);

В этом случае вам нужно использовать метод, предоставленный aurealus. Прочтите request.body и десериализуйте его с помощью json stdlib.

#Django code:
import json
def save_data(request):
  if request.method == 'POST':
    json_data = json.loads(request.body) # request.raw_post_data w/ Django < 1.4
    try:
      data = json_data['data']
    except KeyError:
      HttpResponseServerError("Malformed data!")
    HttpResponse("Got json data")
61
ответ дан 23 November 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: