Я отправляю запрос POST с телом JSON на сервер Django (довольно стандартный). На сервере мне нужно декодировать это, используя json.loads()
.Получить тело запроса как строку в Django
Проблема в том, как получить тело запроса в строковом формате?
У меня есть следующий код в настоящее время:
body_data = {}
if request.META.get('CONTENT_TYPE', '').lower() == 'application/json' and len(request.body) > 0:
try:
body_data = json.loads(request.body)
except Exception as e:
return HttpResponseBadRequest(json.dumps({'error': 'Invalid request: {0}'.format(str(e))}), content_type="application/json")
Однако это дает ошибку the JSON object must be str, not 'bytes'
.
Как получить тело запроса в виде строки с применением правильной кодировки?
Выполняет ли 'request.read()' работу? – dhke
@dhke, нет, это дает то же самое, что меня действительно удивило. 'request.body.decode ('utf-8')', похоже, работает, но я не уверен, что это лучший способ сделать это? – zelanix