Django + React axios POST не может получить доступ к свойствам Json

Я создал два объекта, которые должны обрабатываться раздельно в бэкенде, и отправил его в бэкенд с:

const order = {
    order_id: 1,
    customer: {
        name: "Jonas Illver"
        age: 18
    }
}

const car = {
    model: 'XHL'
    brand: 'Toyota'
}

const postData = {
    order: order,
    car: car
}

const res = await axios.post("orders/shipping/create", JSON.stringify(postData));
console.log(res);

Здесь я возвращаю ответ: views.py

@api_view(['POST'])
@permission_classes([IsAuthenticated])
def shipping_create_order(request):
    if request.method == 'POST':
        return JsonResponse(request.POST)

Вот что печатает console.log:

res.data // {"order:"{"order_id": 1, "customer": {"name": "Jonas Illver", "age": 18}}, "car": **car object content**}

Проблема в том, что если я пытаюсь получить доступ к этим данным в моем представлении django, я всегда получаю ошибку 500
. Я пробовал получить доступ к ним через:

order = request.POST['order']
# and also
data = json.loads(request.POST)
order = data['order']
# also
order = request.POST.get('order')

Ни один из вышеперечисленных подходов не сработал, единственный, который не вызывает 500 ошибку, это последний, с использованием POST.get, но как только я добавляю строку if not order: return HttpResponse("No order"), он всегда возвращает "No order"

Как я могу получить доступ к определенной информации из request.POST? Я делаю что-то не так с запросом axios?

Попробуйте использовать request.data для получения данных, переданных в теле. Посмотрите документацию rest-framework docs. Или другой способ получения данных - использование json.loads(request.body). Но использование request.data немного короче, так как он делает работу json.loads за вас.

Вернуться на верх