Formularios en Flask: cómo usar GET y POST
¿Qué son los formularios en Flask?
Los formularios permiten que los usuarios envíen datos desde una página web hacia tu aplicación Flask. Son esenciales para funcionalidades como:
Login de usuarios
Registro
Búsquedas
Envío de información
Flask maneja formularios principalmente a través de los métodos HTTP GET y POST.
Métodos GET vs POST
GET
Envía datos a través de la URL
Visible en el navegador
Ideal para búsquedas
Ejemplo:
/buscar?nombre=juan
POST
Envía datos de forma oculta
Más seguro que GET
Ideal para formularios sensibles (login, registros)
Crear un formulario básico
HTML (templates/formulario.html)
Formulario
Formulario de ejemplo
Capturar datos en Flask
app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/formulario", methods=["GET", "POST"])
def formulario():
if request.method == "POST":
nombre = request.form.get("nombre")
return f"Hola, {nombre}"
return render_template("formulario.html")
¿Cómo funciona?
El usuario abre la página → método GET
Llena el formulario
Envía datos → método POST
Flask recibe los datos con request.form
Múltiples campos en un formulario
Captura en Flask
if request.method == "POST":
nombre = request.form.get("nombre")
email = request.form.get("email")
Validación básica
Nunca confíes en los datos del usuario sin validar:
if not nombre:
return "El nombre es obligatorio"
También puedes validar desde HTML:
Redireccionar después de enviar
Es buena práctica redirigir después de un POST:
from flask import redirect, url_for
return redirect(url_for("formulario"))
Esto evita que el formulario se envíe varias veces al recargar.
Mostrar datos en otra página
Puedes enviar datos a otra ruta:
@app.route("/resultado")
def resultado():
nombre = request.args.get("nombre")
return f"Hola {nombre}"
Buenas prácticas
Usa POST para datos sensibles
Valida siempre los datos
Usa redirect() después de POST
No mezcles demasiada lógica en el HTML
Considera usar Flask-WTF para formularios más avanzados
Errores comunes
Olvidar methods=["GET", "POST"]
Usar mal request.form vs request.args
No validar datos
No manejar campos vacíos
Conclusión
Los formularios son el puente entre el usuario y tu aplicación. Con Flask puedes manejarlos fácilmente y construir desde simples entradas hasta sistemas completos de autenticación.
Dominar GET y POST es clave para crear aplicaciones web interactivas.