Contenido del curso
Rutas y Plantillas con Jinja
Manejo de Formularios y Datos
Organización del Proyecto y Mejoras
Seguridad y Testing
- 14

Sesiones en Flask con blueprints y cookies
09:09 min - 15

Implementación de Login y Logout con Validación de Sesiones
03:35 min - 16

Validación de formularios en Flask con mensajes de error
04:30 min - 17

Pruebas Unitarias en Flask: Creación y Configuración
12:50 min - 18

Desarrollo de Microservicios con Flask
02:54 min
Eliminar notas con Flask y SQLAlchemy
Resumen
Eliminar una nota en un CRUD con Flask y SQLAlchemy requiere una vista con método POST, un formulario en el template y un redirect al home. Esta lógica completa el ciclo de listar, crear, obtener y eliminar objetos en una tabla, ideal para quienes están construyendo sus primeras apps web con Python.
El flujo se apoya en la sesión de la base de datos para confirmar el borrado y en un formulario HTML que dispara la petición. Aquí te muestro cómo se conectan las piezas tal como aparecen en la clase.
¿Cómo se define la ruta para borrar una nota en Flask?
La vista para eliminar se parece mucho a la de editar, pero con una diferencia clave: solo acepta POST. No necesitas GET porque no vas a mostrar un formulario nuevo, solo confirmar que el registro debe desaparecer [0:14].
La ruta recibe el id de la nota como variable en la URL, y dentro de la función debes:
- Buscar la nota por su
iden la base de datos. - Validar que exista, porque no tiene sentido borrar algo inexistente.
- Llamar a
session.delete()pasando la instancia del modelo. - Confirmar el cambio en la base de datos.
- Hacer un
redirecthacia el home para mostrar la lista actualizada [0:48].
¿Por qué usar solo POST para eliminar? Porque GET se reserva para obtener datos. Las acciones que modifican el estado de la base de datos, como borrar, deben usar POST para evitar borrados accidentales por simples visitas a una URL.
¿Qué hace session.delete en SQLAlchemy?
El método delete de la sesión recibe una instancia del modelo y la marca para eliminación. Casi todos los métodos de session trabajan así: con instancias o modelos, no con valores sueltos [1:05]. Después necesitas confirmar el cambio para que el borrado quede registrado en la tabla.
¿Cómo se crea el botón de eliminar con un formulario HTML?
Como la vista solo acepta POST, no basta con un enlace. En el template del home envuelves el botón en un form con method="post" y un action que apunta a la ruta delete_note con el id de cada nota [1:33].
El bloque queda así en esencia:
form method="post"para indicar el verbo HTTP.actionapuntando a la URL de borrado con elidcorrespondiente.- Un
button type="submit"con el texto Eliminar.
Al recargar la página, si haces inspect sobre el botón verás que el primer formulario tiene un action tipo Eliminar nota 1 y el segundo Eliminar nota 2, cada uno con su POST listo para dispararse [2:14].
¿Qué diferencia hay entre usar un link y un form para borrar? Un link genera un GET, que no debería modificar datos. Un form con method POST envía la petición correcta y permite que el servidor ejecute el borrado de forma segura.
¿Cómo se verifica el flujo de borrado en el navegador?
Abrir la pestaña Network del navegador te permite ver el ciclo completo de la petición. Activa el checkbox para mantener los logs y así conservar el registro aunque la página se recargue [2:38].
Al pulsar Eliminar verás dos entradas:
- Un POST a la URL de borrado que devuelve un código 302, que es la redirección.
- Un GET al home que devuelve un 200, mostrando la lista ya sin la nota borrada [2:55].
Ese 302 es la señal de que el redirect funcionó: el servidor le dice al navegador que vaya a otra URL después de procesar el POST. Es un patrón clásico para evitar que el usuario reenvíe el formulario al recargar.
¿Qué significan los códigos 302 y 200 en este flujo?
El 302 indica una redirección temporal: el servidor procesó tu POST y te manda a otra ruta. El 200 confirma que la nueva página, en este caso el home, cargó correctamente. Ver ambos en Network te asegura que el borrado y la redirección están bien encadenados.
¿Qué reto puedes practicar con el botón de eliminar?
En lugar de borrar la nota apenas hagas clic, agrega una alerta de confirmación que pregunte si realmente quieres eliminarla [3:30]. Esto implica reorganizar el formulario y el botón actual para que la confirmación se dispare antes del submit.
Con este ejercicio refuerzas dos cosas: el manejo de eventos en el frontend y la disciplina de proteger acciones destructivas en cualquier CRUD. Cuéntame en los comentarios cómo resolviste la confirmación y qué cambios hiciste en el template.