Вам не нужно использовать JSON.stringify
с топором ios. Топор ios обрабатывает его изнутри. Просто отправьте простой объект javascript на сервер, например,
axios({
method: 'post',
url: 'my_url',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=utf-8'
},
data: data,
})
. Если вы используете stringify, Ax ios принимает эту строку как JSON и снова внутренне ее строкизирует, поэтому вы Django не может декодировать его.
РЕДАКТИРОВАТЬ В соответствии с вашим комментарием к вопросу, я вижу, что вы используете простое представление Django для обработки запроса. Django представления используют WSGIRequest
объект в качестве параметра запроса. Поскольку JSON отправляется как тело запроса, они ничего не делают с ним (не анализируют) и представляют исходные данные как есть. вот почему вы видите байтовый объект как request.body
. Вы можете вручную проанализировать его, используя модуль json из python стандартной библиотеки, например, так:
request.data = json.loads(request.body)
Или, если вы хотите больше API-совместимого объекта запроса, я рекомендую использовать декоратор api_view
из Django rest фреймворк, подобный этому
@api_view(http_allowed_methods=['post'])
def func(request):
pass
Он обернет ваш запрос объектом Request
из модуля rest_framework.request
, который будет обрабатывать все ваши разборы и представлять проанализированные данные как request.data
. Подробнее об этом можно прочитать здесь .