Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Flash Python: Desarrollo web con Flask

Seguro has visto mensajes como:

¡Te registraste con éxito!

Ocurrió un error, intenta de nuevo

Esos son los mensajes Flash. Hoy aprenderás cómo funcionan y cómo usarlos en Flask para mejorar la experiencia de tus usuarios.


¿Qué son los mensajes Flash?

El mensaje Flash es un aviso que aparece una sola vez luego de que el usuario realiza una acción como registrarse, iniciar sesión o enviar un formulario. Sirven para comunicar si esa acción fue exitosa o si ocurrió algún problema.

Lo especial de estos mensajes es que:

💬 Solo aparecen una vez: justo después de la acción.

💬 Se guardan temporalmente usando sesiones (una característica de Flask que permite “recordar” información entre peticiones del mismo usuario).

💬 No necesitas eliminarlos manualmente. Flask lo hace por ti.


¿Cómo funcionan en Flask?

Flask tiene soporte incorporado para trabajar con mensajes Flash. Para usarlos, primero debes importar la función flash:

from flask import flash

Pero también vamos a utilizar otras funciones y objetos útiles:

from flask import Flask, flash, redirect, get_flashed_messages, render_template

Paso 1: Configurar la aplicación

Tenemos que definir una clave secreta (secret key) en Flask para poder usar sesiones. Es un requisito de Flask para que funcione correctamente el almacenamiento temporal de datos entre solicitudes.

app = Flask(__name__)
app.secret_key = "clave_secreta"

Una clave secreta puede ser cualquier cadena, pero en ambiente de producción debe mantenerse privada y segura.

Paso 2: Crear una ruta donde se genera el mensaje Flash

Imagina que el usuario hace algo y queremos mostrarle un mensaje después. Usamos la función flash para guardar ese mensaje, pero recuerda: el mensaje se mostrará en la siguiente solicitud.

@app.post('/foo')
def foo_post():
    # Guardamos un mensaje flash para la próxima pantalla
    flash('Acción realizada con éxito', 'success')  # 'success' es la categoría del mensaje
    return redirect('/bar')  # Redirigimos al usuario a otra página

👉 Nota: En este ejemplo, usamos el método POST para simular un formulario enviado.

Paso 3: Mostrar el mensaje Flash

Una vez que redirigimos al usuario a otra ruta (en este caso, /bar), extraemos los mensajes con get_flashed_messages:

@app.get('/bar')
def bar_index():
    messages = get_flashed_messages(with_categories=True)
    return render_template('bar.html', messages=messages)

Y en la plantilla HTML (templates/bar.html):

<!-- templates/bar.html -->
{% if messages %}
  <ul class="flashes">
  {% for category, message in messages %}
    <li class="{{ category }}">{{ message }}</li>
  {% endfor %}
  </ul>
{% endif %}

Como usas with_categories=True, cada mensaje se recibe como una tupla con la categoría (por ejemplo 'success') y el texto del mensaje. Esto se puede aprovechar para darle estilos diferentes en el HTML.


¿Qué categorías de mensajes Flash existen?

Los frameworks como Flask tienen convenciones sobre los tipos de mensajes para mostrar:

Categoría Uso típico
✅ success Algo salió bien, como un registro exitoso
⚠️ warning Avisos importantes que no son errores
❌ error Algo salió mal, hay que alertar al usuario

Estas categorías te permiten aplicar diferentes estilos en tu HTML usando clases CSS.


Múltiples mensajes

Puedes mostrar varios mensajes Flash al mismo tiempo. Simplemente llamas a flash varias veces antes de la redirección, y luego get_flashed_messages los recupera todos:

flash('Bienvenido de nuevo', 'success')
flash('Verifica tu correo', 'warning')
flash('Hubo un problema al guardar los datos', 'error')

# Luego en /bar
get_flashed_messages(with_categories=True)
# Resultado:
# [
#   ('success', 'Bienvenido de nuevo'),
#   ('warning', 'Verifica tu correo'),
#   ('error', 'Hubo un problema al guardar los datos')
# ]

¿Dónde se guardan los mensajes?

Estos mensajes se guardan en una sesión, algo que Flask maneja internamente con cookies. Las sesiones mantienen información entre múltiples solicitudes del mismo usuario. Más adelante en el curso verás sesiones con más detalle, pero por ahora solo necesitas saber que sin una sesión activa (y sin una clave secreta), Flask no puede guardar estos mensajes.


Código completo de ejemplo

Aquí tienes todo integrado en una pequeña aplicación:

from flask import Flask, flash, redirect, get_flashed_messages, render_template

app = Flask(__name__)
app.secret_key = "clave_secreta"

@app.post('/foo')
def foo_post():
    flash('Operación realizada con éxito', 'success')
    return redirect('/bar')

@app.get('/bar')
def bar_index():
    messages = get_flashed_messages(with_categories=True)
    return render_template('bar.html', messages=messages)

Y el HTML:

<!-- templates/bar.html -->
{% if messages %}
  <ul class="flashes">
  {% for category, message in messages %}
    <li class="{{ category }}">{{ message }}</li>
  {% endfor %}
  </ul>
{% endif %}

Resumen

  • Los mensajes Flash se usan en aplicaciones web para mostrar alertas temporales al usuario.
  • Flask ofrece la función flash() para guardar el mensaje y get_flashed_messages() para recuperarlo.
  • Se muestran una sola vez, en la siguiente vista luego de una acción como enviar un formulario.
  • Usan sesiones como sistema de almacenamiento temporal.
  • Se integran fácilmente en los templates HTML y permiten customización con CSS.

Trabajo independiente

  1. Agrega la implementación de mensajes Flash al crear un usuario, usando ejemplos de la teoría.

image_processing_2.png

Aplicación de referencia

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY