Eliminar tareas
Clase 33 de 36 • Curso de Flask
Resumen
¿Cómo eliminar tareas de la lista en nuestra aplicación?
Aumentar la funcionalidad de una aplicación es crucial para mejorar la experiencia del usuario y mantener la información actualizada. En esta clase, nos enfocamos en eliminar tareas de nuestra aplicación, añadiendo nueva lógica para borrar y actualizar elementos de la lista de tareas.
¿Cómo se limpian las colecciones anteriores y se añaden nuevas propiedades?
Para empezar, es esencial limpiar nuestra base de datos antes de realizar cambios significativos en nuestros registros. El proceso incluye:
- Eliminar las colecciones de tareas previas: Retirando las tareas existentes, mantenemos la base de datos ordenada.
- Insertar una nueva propiedad en las tareas: Ahora, cada tarea incluirá un campo booleano llamado
don
, indicando si la tarea está completada o no. Este campo se iniciará enfalse
.
¿Cómo se implementa la ruta para borrar tareas?
Para poder eliminar tareas, se necesita una nueva ruta en la aplicación utilizando Flask:
@app.route('/todos/delete/<todo_id>', methods=['POST'])
def delete_todo(todo_id):
user_id = current_user.id
delete_todo_from_database(user_id, todo_id)
return redirect(url_for('hello'))
En este fragmento, se define una ruta dinámica con Flask que usa el método POST para borrar tareas basándose en el todo_id
.
¿Cómo se configura el servicio Firestore para eliminar tareas?
El siguiente paso es realizar cambios en el FirestoreService
para soportar la eliminación de tareas:
def delete_todo_from_database(user_id, todo_id):
todo_ref = db.collection('users').document(user_id).collection('todos').document(todo_id)
todo_ref.delete()
Aquí se obtiene la referencia del documento a eliminar, y luego se utiliza el método delete()
para borrarlo de Firestore.
¿Cómo se implementa la lógica en la interfaz de usuario?
La presentación visual de la aplicación importa tanto como su funcionalidad. Mejorar la UI ayuda a los usuarios a navegar y utilizar la app eficientemente.
¿Cómo se utiliza Bootstrap para mejorar la interfaz?
La utilización de componentes de Bootstrap, como list-group
y badge
, hace que la lista de tareas sea más clara visualmente:
<ul class="list-group">
{% for todo in todos %}
<li class="list-group-item d-flex justify-content-between align-items-center">
{{ todo.description }}
<span class="badge badge-primary badge-pill">
{{ 'Hecho' if todo.to_dict().get('don', False) else 'Pendiente' }}
</span>
</li>
{% endfor %}
</ul>
¿Cómo se incorpora un formulario para eliminar tareas?
En lugar de construir completamente un formulario en Flask, se puede simplificar el proceso manteniendo lo esencial con el siguiente form:
class DeleteTodoForm(FlaskForm):
submit = SubmitField('Borrar')
Y al integrarlo en la UI se ve así:
{% for todo in todos %}
<form action="{{ url_for('delete_todo', todo_id=todo_id) }}" method="post">
<button type="submit" class="btn btn-danger">Borrar</button>
</form>
{% endfor %}
¿Cuáles son los desafíos comunes al implementar estas características y cómo solucionarlos?
Durante la implementación, puede aparecer un error si la ruta no está correctamente definida o si la base de datos no reconoce el ID del documento. Estos se pueden solucionar:
- Error de URL: Asegúrate de que todas las rutas tengan un
/
inicial. - Documentos no encontrados: Verifica que las referencias a documentos utilicen correctamente las variables
user_id
ytodo_id
.
Implementar estas funcionalidades es un excelente paso adelante para mejorar tu aplicación, ofreciendo a los usuarios más control sobre sus tareas y permitiéndoles gestionar eficientemente su lista de quehaceres. ¡Sigue así, estás haciendo un gran trabajo!