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

CRUD: Eliminación Python: Desarrollo web con Flask

🗑️ Hoy veremos cómo eliminar una entidad en una app web. Por ejemplo, si gestionas colegios y alguien quiere borrar uno de la lista, aunque parece sencillo, hay detalles importantes en cuanto a técnica, experiencia de usuario y seguridad que debemos considerar.


¿Qué es eliminar una entidad?

Eliminar una entidad significa quitar un registro de manera permanente de la base de datos.

Mira este ejemplo en Python con Flask:

@app.route('/schools/<id>/delete', methods=['POST'])
def schools_delete(id):
    repo = SchoolRepository()
    repo.destroy(id)
    flash('School has been deleted', 'success')
    return redirect(url_for('schools_index'))

Este código borra un colegio usando su ID. Usamos una clase llamada SchoolRepository, la cual se encarga de hablar directamente con la base de datos. Luego avisamos al usuario (¡Colegio eliminado con éxito! ✅) y lo redirigimos al listado de colegios.


¡Cuidado con borrar por accidente!

❗Aquí viene un consejo importante: nunca deberíamos permitir que un clic borre algo de inmediato.

¿Por qué? Porque la gente se equivoca fácilmente.

Por eso lo recomendado es preguntar antes: ¿Estás seguro de que quieres borrar este colegio? Esta acción no se puede deshacer.

Puedes hacerlo en el botón HTML, algo así:

<form action="{{ url_for('schools_delete', id=school.id) }}" method="post"
onsubmit="return confirm('¿Estás seguro de que quieres borrar este colegio? Esta acción no se puede deshacer.');">
  <input type="submit" value="Eliminar">
</form>

Este onsubmit="return confirm(...)" muestra un cuadro de confirmación, que evita que alguien borre algo sin querer.


Seguridad: No cualquiera puede borrar

Eliminar un colegio —o un usuario— es una acción sensible. Por eso hay un concepto muy importante que debemos implementar: la autorización.

La autorización es el proceso que define quién tiene permiso para hacer ciertas cosas. Por ejemplo, tal vez solo los administradores pueden borrar colegios. Antes de hacer la operación, hay que verificar si el usuario tiene ese permiso.

Esto es distinto de la autenticación, que es simplemente verificar quién es el usuario, por ejemplo, pidiéndole su usuario y contraseña.

Concepto ¿Qué hace?
Autenticación Verifica la identidad del usuario (¿quién es?)
Autorización Verifica si el usuario tiene permiso de hacer algo (¿puede hacer esto?)

En muchos frameworks (como Flask, Django, etc.), existen herramientas y bibliotecas para manejar la autorización. Por ejemplo, puedes proteger una ruta para que solo un usuario con rol de administrador llegue a ella.


¿Cómo se hace realmente una eliminación en la web?

El protocolo HTTP define varios "verbos", o métodos, para cada tipo de acción:

  • GET: ver información
  • POST: enviar información
  • PUT: modificar algo
  • DELETE: borrar algo

Entonces, por estándares, para borrar algo se debe usar el método DELETE. Pero aquí hay un truco…

Problema: HTML puro no soporta formularios que usen DELETE (solo acepta GET y POST).

Solución: Envías un formulario con POST, pero ese formulario va a una ruta especial que sabemos que está pensada para hacer un DELETE.

<form action="{{ url_for('schools_delete', id=school.id) }}" method="post"
onsubmit="return confirm('¿Estás seguro de que quieres eliminar este colegio?');">
  <input type="submit" value="Eliminar">
</form>

En tu backend, tú decides que esa ruta y ese POST realmente significan que vas a borrar el colegio.


¡No uses GET para eliminar!

Nunca, nunca uses una URL con GET para hacer algo destructivo como borrar contenido.

¿Por qué?

  • Los navegadores y buscadores pueden visitar los enlaces automáticamente (por precarga, escaneo, etc.)
  • Eso podría eliminar datos sin permiso del usuario

Ejemplo que debes evitar:

<a href="/schools/5/delete">Eliminar</a> <!-- ¡Esto es peligroso! -->

Si por error alguien llega a esa dirección —o si el navegador la visita automático— podrías perder datos importantes sin que nadie lo haya aprobado. Por eso, siempre usa formularios y POST (o DELETE si tu framework lo permite correctamente).


Resumen

  • Eliminar una entidad parece simple, pero incluye detalles importantes de experiencia de usuario y seguridad.
  • Siempre pide confirmación al usuario antes de borrar, para evitar errores involuntarios.
  • Usa autorización para definir quién puede hacer operaciones sensibles.
  • El método correcto para borrar una entidad es DELETE, pero como HTML no lo permite, se simula enviando un formulario POST.
  • Nunca uses enlaces GET para eliminar datos. Podrías borrar cosas por accidente.

¡Listo! Con esto ya sabes cómo manejar borrados de forma segura y adecuada.


Trabajo independiente

  1. Implementa la eliminación de usuarios.

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