Как исправить ошибку: werkzeug.routing.BuildError: не удалось создать URL-адрес для конечной точки «удалить» со значениями ['id']. Вы имели в виду «индекс» вместо этого?

Я пытаюсь создать кнопку в HTML, которая удаляет строку в базе данных, когда я ее нажимаю. Это для фляжного приложения. вот HTML:

<div class="container-fluid text-center" id="products">
    {% for product in productList %}
    <div class='userProduct'>
        <a href="{{ product.productURL }}" target="_blank">{{ product.title|truncate(30) }}</a>
        <h4 class="currentPrice">${{ product.currentPrice }}</h4>
        <h5 class="budget">Budget: {{ product.userBudget }}</h5>
        <form action="{{ url_for('delete', id=product.id) }}">
            <button class="btn btn-sm btn-primary" type="submit">Remove from Wishlist</button>
        </form>
    </div>
    {% endfor %}
</div>

А вот маршрут в файле python

@app.route('/delete/<id>')
@login_required
def delete(id):
    remove_product = Product.query.filter_by(id=int(id)).first()
    db.session.delete(remove_product)
    db.session.commit()
    return redirect(url_for('dashboard'))

Что-то не так с url_for? Я хочу передать идентификатор с кнопки в файл Python, чтобы определить, какую запись удалить из базы данных.


person Scott    schedule 02.09.2020    source источник


Ответы (1)


Вероятно, вы передаете идентификатор как целое число, а ваш маршрут ожидает строку. Используйте это вместо этого:

@app.route('/delete/<int:id>')
person Richard Fogaca Nienkotter    schedule 02.09.2020