Wysyłam żądanie POST z ciałem JSON do serwera Django (dość standardowe). Na serwerze muszę to zdekodować, używając json.loads()
.Uzyskaj treść żądania jako ciąg znaków w Django
Problem polega na tym, w jaki sposób uzyskać treść żądania w formacie ciągu?
Mam następujący kod obecnie:
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")
to jednak daje błąd the JSON object must be str, not 'bytes'
.
Jak pobrać treść żądania w postaci ciągu znaków z poprawnym kodowaniem?
Czy 'request.read()' wykonuje zadanie? – dhke
@dhke, nie, daje to samo, co mnie naprawdę zaskoczyło. 'request.body.decode ('utf-8')' wydaje się działać, ale nie jestem pewien, czy jest to najlepszy sposób na zrobienie tego? – zelanix