Django просмотр не получает Json данных? - PullRequest
0 голосов
/ 06 января 2020

Используя простой Python скрипт, я хочу отправить запрос с Python -Requests в Django представление. Представление Django должно получить данные json внутри запроса и распечатать их на моей консоли; вот что я попробовал:

Вот как я отправляю запрос:

url = 'http://127.0.0.1:8000/myview/view'
client = requests.session()   
csrftoken = requests.get(url).cookies['csrftoken']
data = json.dumps({'data': 'test-value'})
header = {'X-CSRFToken': csrftoken}
cookies = {'csrftoken': csrftoken}
resp = requests.post(url, data=data, headers=header, cookies=cookies)

И вот как представление Django получает его:

def myview(request):
    if request.method == 'POST':
        data = request.POST.get('data')
        print(data)
        print('received.')

    response = HttpResponse(get_token(request))
    return response

Проблема с моим текущим кодом заключается в том, что print(data) выдаст следующий вывод:

None
received.
[06/Jan/2020 21:23:57] "POST /myview/view HTTP/1.1" 200 64

Таким образом, вместо вывода test-value, он ничего не печатает. Я не понимаю, ошибка в моем Django виде или в том, как я отправляю запрос. Любой совет приветствуется!

1 Ответ

2 голосов
/ 06 января 2020

Проблема связана с вашим запросом и полностью вызвана этой строкой:

data = json.dumps({'data': 'test-value'})

Вы просто хотите

data = {'data': 'test-value'}

Данные POST должны отправляться в виде простого словаря, а не JSON строка - см. документацию и пример здесь .

...