2012-09-23 11 views
39

Estoy tratando de obtener los datos enviados en un matrazmoldeada Frasco valor formulario para int

@app.route('/getpersonbyid', methods = ['POST']) 
    def getPersonById(): 
     personId = (int)(request.form['personId']) 
     print personId 

Estoy enviando los datos "personId" a través de POST en RESTClient. Pero no estoy obteniendo el resultado; Obtengo un error de 400 Bad Request en su lugar.

¿Hay un error en mi código? Si es así, ¿cómo obtengo datos específicos cuando los datos de la solicitud se envían a través de POST?

+1

No hay necesidad de poner paréntesis alrededor del tipo 'int'; Python no hace moldes. :-) –

+0

¿Y por 'no obtener un resultado' quiere decir que obtiene un error? –

+0

Recibo un error Pedido incorrecto –

Respuesta

45

Quiere devolver su valor personId; la impresión de que la consola no ayudará en una aplicación web:

@app.route('/getpersonbyid', methods = ['POST']) 
def getPersonById(): 
    personId = int(request.form['personId']) 
    return str(personId) # back to a string to produce a proper response 

El paréntesis alrededor int son ruido sin sentido, por cierto, no son necesarios en Python y en este caso son ignorados por el analizador.

Supongo que está haciendo algo significativo con el valor personId en la vista; de lo contrario, usando int() en el valor es un poco inútil.

También puede utilizar el MultiDict.get() method a tener el valor convertido para usted:

personId = request.form.get('personId', type=int) 

Ahora personId se establece en un entero, oNone si el campo no está presente en la forma o no puede ser convertido a un entero.

+0

eliminé 'int' y ahora está funcionando. ¡Gracias! –

+0

@ Amritha: correcto, en cuyo caso el valor de 'personId' no es un int en absoluto; sus registros le mostrarían ese error (algo así como 'ValueError'). –

+0

sí, ese es el error –