Джанго не отправляет правильный ответ JSON - PullRequest
1 голос
/ 06 октября 2019

Я настроил простой проект, и когда будет сделан запрос на публикацию, ожидается, что он вернет ответ в зависимости от того, какое значение ввел пользователь.

Я проверяю свою логику API в почтальоне.

В данный момент, независимо от того, какое значение я ввожу, один и тот же ответ json отправляется обратно. Это не ожидаемая логика.

views.py:

def function(request):
    if request.method == 'POST':
        if request.POST.get("number") == 1:
            print("Number is 1")
            return JsonResponse({'message':'Number is 1'})
        else:
            print("Number is not 1")
            return JsonResponse({'message':'Number is not 1'})

Даже если значение числа равно 1, возвращается сообщение: Число не равно 1.

Запрос почтальона:

{
    "number": 1
}

Спасибо.

1 Ответ

1 голос
/ 06 октября 2019

Из документов :

Если вам нужен доступ к необработанным или неформальным данным, опубликованным в запросе, получите доступ к нему через HttpRequest. вместо этого атрибут body.

Поскольку вы отправляете данные, которые не являются данными формы, вам нужно использовать request.body вместо:

import json

def function(request):
    if request.method == 'POST':
        data = json.loads(request.body)
        if data.get("number", 0) == 1:
            print("Number is 1")
            return JsonResponse({'message':'Number is 1'})
        else:
            print("Number is not 1")
            return JsonResponse({'message':'Number is not 1'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...