Cómo acceder a los datos del cuerpo de la solicitud WSGIRequest?
Quiero obtener los datos recibidos de una solicitud URL, pero no puedo acceder a ellos, aquí está mi código:
def save_stripe_info(request):
data = request.body
email = data[0]
payment_method_id = data[1]
print('mail=> ', email, ' i=> ', payment_method_id, 'hello => ', data)
# algún código
Está imprimiendo la siguiente salida:
mail=> 45 i=> 45 hello => b'------WebKitFormBoundary2ndFleWNwV9sa24C\r\nContent-Disposition: form-data; name="email"\r\n\r\ntesti@gmail.com\r\n------WebKitFormBoundary2ndFleWNwV9sa24C\r\nContent-Disposition: form-data; name="payment_method_id"\r\n\r\npm_1K5wvrBbWBJ638dRyJJeYjnL\r\n------WebKitFormBoundary2ndFleWNwV9sa24C--\r\n'
Y si intento email = data[email]
, obtengo un error que dice que los índices de la lista deben ser números enteros.
¿Cómo puedo obtener el correo electrónico (email
) y el ID del método de pago (payment_method_id
) de la solicitud?
También intenté:
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['email']
Pero esto está dando un error json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
davy.ai
Los datos recibidos de la solicitud URL están en forma de form-data. Por lo tanto, el cuerpo de la solicitud debe ser decodificado y analizado en pares clave-valor.
Aquí tienes un fragmento de código actualizado para obtener el correo electrónico (email) y el ID del método de pago (payment_method_id) del cuerpo de la solicitud:
En el código actualizado, el cuerpo de la solicitud primero se decodifica utilizando la codificación utf-8. Luego, se divide en
&
para crear una lista de pares clave-valor. Finalmente, se crea un diccionario a partir de estos pares utilizando una comprensión de diccionario.Usando el método
get()
, los valores deemail
ypayment_method_id
pueden ser fácilmente obtenidos del diccionario.Ten en cuenta que se produjo el error
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
porque el cuerpo de la solicitud no está en formato JSON. Por lo tanto, al decodificarlo usando el métodojson.loads()
, se produjo un error.