Как передать id в функцию для удаления элементов из списка - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над удалением товаров из корзины, но когда я нажимаю кнопку «удалить», он берет все товары из корзины и удаляет их все.Как я могу сделать так, чтобы функция принимала только идентификатор для элемента, который я хочу удалить?

@phones.route('/delete_cart',  methods=['GET', 'POST'])
def delete_cart():
    items = [j for i in session["cart"] for j in i]
    for item in items:
        phone = get_phone_by_id(item)
        print([phone.id])
        session['cart'].remove([phone.id])
        session.modified = True

    return redirect(url_for('main.phones'))

HTML:

<table class="table table-striped">
<tr><th>Phone Name</th><th>Quantity</th><th>Price</th><th>Total</th><th></th></tr>
{% for key, phone in display_cart.items() %}
    <tr>
        <td>{{ phone["brand"] }} {{ phone["model"] }}</td>
        <td>{{ phone["qty"] }}</td>
        <td>£{{ "%.2f" % phone["price"] }}</td>
        <td>£{{ "%.2f" % (phone["qty"] * phone["price"])}}</td>
        <td><a href="{{ url_for('phones.delete_cart', id=phone.id) }}">Remove</a></td></tr> 
{% endfor %}

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

После вашего предыдущего вопроса Удаление элемента из списка python , метод должен быть таким:

@phones.route('/delete_cart/id',  methods=['GET', 'POST'])
def delete_cart(id):
    phone = next(item for item in session['cart'] if item['id'] == id)
    print(phone)
    session['cart'].remove(phone)
    session.modified = True

    return redirect(url_for('main.phones'))
0 голосов
/ 25 февраля 2019

Маршрут должен выглядеть следующим образом:

@phones.route('/delete_cart/<int:id>', methods=['GET', 'POST'])
def delete_cart(id):

Указывает, что идентификатор является целочисленной переменной.

0 голосов
/ 25 февраля 2019

В этом случае я бы добавил ваш параметр id в ваш маршрут и получил бы прямой доступ к нему.

@phones.route('/delete_cart/id',  methods=['GET', 'POST'])
def delete_cart(id):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...