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
за вас.