Parámetros POST con Flask

02/Abr/2016 Python Deja un comentario

Crear un formulario en una aplicación POST nos llevará a saber cómo controlar los datos que subimos. Aquí vamos a ver cómo podemos manejar los parámetros POST con Flask.

Lo primero será crear una ruta que acepte una petición GET la cual nos devuelva un formulario. el formulario lo vamos a renderizar mediante un método render_template()

  1. @app.route('/saludo',methods=['GET'])
  2. def formulario():
  3. return render_template('formulario.html')

La plantilla del formulario será muy sencilla. Lo importante es que el método sea POST y que el campo action esté apuntando a la misma ruta /saludo

  1. <form action="/saludo" method="post">
  2. <label for="nombre">Nombre</label>
  3. <input type="text" id="nombre" name="nombre"><br/>
  4.  
  5. <label for="apellido">Apellido</label>
  6. <input type="text" id="apellido" name="apellido"><br/>
  7.  
  8. <input type="submit" value="Enviar" />
  9. </form>

Es muy importante poner los atributos name en el formulario, ya que será ese atributo el que utilicemos para recuperar el valor.

Ahora volvemos a crear la misma ruta, pero en este caso para que acepte las peticiones POST.

  1. @app.route('/saludo',methods=['POST'])
  2. def saludo():

Para acceder a la información de los atributos del formulario utilizamos el objeto request.form. Este objeto tiene en una colección los atributos. Así que recuperaremos el valor de los campos nombre y apellidos del formulario mediante el siguiente código:

  1. nombre = request.form['nombre']
  2. apellido = request.form['apellido']

Ya solo nos quedará algo así como devolverlos como respuesta:

  1. @app.route('/saludo',methods=['POST'])
  2. def saludo():
  3. nombre = request.form['nombre']
  4. apellido = request.form['apellido']
  5. return 'Hola ' + nombre + ' ' + apellido
  6.  

De esta forma ya hemos conseguido manipular y recuperar parámetros POST con Flask.

Vídeos sobre Flask


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*