No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

3D
1H
26M
36S
Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Eliminar tareas

33/36
Recursos

Aportes 16

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Si cambian el macros.html por:

{% import 'bootstrap/wtf.html' as wtf %}

{% macro render_todo(todo, delete_form) %}
    <li class="list-group-item">
        <span class="badge">
            {%if todo.to_dict().done %}
                Done
            {% else %}
                To do
            {% endif %}
        </span>
        Descripción: {{ todo.to_dict().description }}

        {{ wtf.quick_form(delete_form, action=url_for('delete', todo_id=todo.id)) }}
    </li>
{% endmacro %}

En vez de False ó True les mostrará To do ó Done

Test para borrar un todo:

def test_delete_todo_post(self):
        #Login
        self.client.post(url_for('auth.login'), data=self.fake_log_form)
        response = self.client.post(url_for('delete_user_todo', todo_description='fake_todo'))
        self.assertRedirects(response, url_for('hello'))

En mi caso hice algunos cambios de diseño en el todo list, les dejo el codigo que use y el resultado.
hello.html:

macros.html:

Resultado:

No entiendo realmente por qué hizo otro formulario cuando puede simplemente trabajar mediante urls el delete del todo, a mí me funcionó perfectamente así:

<a href="{{ url_for('todo.delete', todo_id=todo.id) }}" class="btn d-inline-block btn-danger">Delete</a>

En esta clase, veo que es súper importante tomar si o si el curso de Python de David Aroesti. Muchas bases esenciales que al momento de desarrollar se deben tener en cuenta.

Para quienes les haya salido el error Method Not Allowed, al eliminar una tarea y no les redirija a la ruta /hello.

Mi solución fue validar el formulario de eliminación.

@app.route('/todos/delete/<todo_id>', methods=['POST'])
def delete(todo_id):
    delete_form = DeleteTodoForm()
    if delete_form.validate_on_submit():
        user_id = current_user.id
        delete_todo(user_id=user_id, todo_id=todo_id)

    return redirect(url_for('hello'))

😎🔥Al estilo python, 🔥😎

😃

Es más fácil de leer así:

def delete_todo(user_id, todo_id):
    todo_ref = db.document(f'users/{user_id}/todos/{todo_id}')
    todo_ref.delete()

https://j2logo.com/tutorial-flask-espanol/ para estudiar, si quieren profundizar

Link a Bootstrap del diseño que me funcionó.

El concepto CRUD está estrechamente vinculado a la gestión de datos digitales. CRUD hace referencia a un acrónimo en el que se reúnen las primeras letras de las cuatro operaciones fundamentales de aplicaciones persistentes en sistemas de bases de datos:

Create (Crear registros)

Read bzw. Retrieve (Leer registros)

Update (Actualizar registros)

Delete bzw. Destroy (Borrar registros)

Me es más cómoda la alternativa para señalar el PATH de esa manera

Modificación de macro para Bootstrap 4

{% import 'bootstrap/wtf.html' as wtf %}

{% macro render_todo(todo, delete_form) %}
    <li class="list-group-item">   
        <div class="d-flex justify-content-between align-items-center">
            Descripción: {{ todo.to_dict().description }}
            <span class="badge badge-pill badge-secondary">{{ todo.to_dict().done }}</span>
        </div>
        {{ wtf.quick_form(delete_form, action=url_for('delete', todo_id=todo.id)) }}
    </li>
{% endmacro %}

ya quedo el macro

Se me hizo mucho rollo la solución que se nos da en el Curso de Flask para borrar, ¿De verdad es necesario el macros.html?