Estoy publicando algo de JSON sin procesar en mi backend
{ "access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb", "id": 3, "order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}] }Sin embargo, cuando trato de
print (request.POST.get("access_token")) no recibo None
Pero cuando lo hago
print (request.body) Los valores parecen estar allí: b'{\n\t"access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb",\n\t"id": 3,\n\t",\n\t"order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}]\n}'
Estoy usando Postman para publicar los datos.
Quiero almacenar el token de acceso en alguna variable como esta:
access_token = request.POST.get("access_token")con los datos de la publicación
Todavía soy bastante nuevo en Django, cualquier ayuda sería genial.
Request.POST se completa cuando envía datos de formulario. ver django doc , y esta respuesta para más detalles. Dado que, en su caso, está publicando json 'simple', encontrará su carga útil en request.body. Puede decodificar el cuerpo de binario a dict de la siguiente manera:
import json body = json.loads(request.body.decode('utf-8')) access_token = body.get("access_token")Solo hacer un json.loads debería funcionar.
import json json_data = json.loads(request.body)primero debes decodificar el json:
import json variable = urlopen(request).read().decode('utf-8') json_obj = json.loads(variable)entonces puedes recuperar tu información
for i in json_obj: token = i['access_token'] order_details = i['order_details']Espero que esto ayude