- ¿Qué es eliminar una entidad?
- ¡Cuidado con borrar por accidente!
- Seguridad: No cualquiera puede borrar
- ¿Cómo se hace realmente una eliminación en la web?
- ¡No uses GET para eliminar!
🗑️ 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?
⏬ 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!
¿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.
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!
¿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
- 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.