Читайте данные поста Ajax в Django - PullRequest
0 голосов
/ 19 ноября 2018

Я получил Ajax-запрос, используя обещание в моем проекте django:

var path = window.location.pathname;
fetch('/getblogs/', {
  method: 'post',
  headers: {
    'Accept': 'application/json, text/plain, */*',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({'path': path})
}).then(function (response) {
  return response.json();
});

Запрос находится в файле js, а форма отсутствует.

Я пытаюсь прочитать данные в моем views.py, например:

@csrf_exempt
def get_blogs(request):
    cat_id = request.POST.get('path')
    print("RESULT: " + str(cat_id))

Но в результате я получаю:

RESULT: None

Я что-то упускаю при чтении данных поста или тамчто-то не так с моим запросом ajax?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Из документации Django

HttpRequest.POST

Словарь-подобный объект, содержащий все заданные параметры HTTP POST, при условии, что запрос содержит данные формы. Смотрите QueryDict документация ниже. Если вам нужен доступ к необработанным или неформальным данным в запросе, получить доступ к этому через атрибут HttpRequest.body вместо этого.

Попробуйте использовать json.loads(request.body)['path']

0 голосов
/ 19 ноября 2018

Я думаю, вы можете попробовать вот так:

import json

@csrf_exempt
def get_blogs(request):
    cat_id = json.loads(request.body).get('path')
    print("RESULT: " + str(cat_id))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...