微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决错误:werkzeug.routing.BuildError:无法使用值['id']为端点'delete'构建URL您是说“索引”吗?

如何解决如何解决错误:werkzeug.routing.BuildError:无法使用值['id']为端点'delete'构建URL您是说“索引”吗?

我正在尝试使用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进行任何操作有问题吗?我想将ID从按钮传递到python文件,以便确定从数据库删除哪个条目。

解决方法

您可能正在将ID作为整数传递,并且您的路由期望使用字符串。改用它:

@app.route('/delete/<int:id>')
,

我刚刚遇到了同样的错误, 在我的情况下,它是由数据库中的某些值为 None 引起的。 所以也许检查 product.id 是否有缺失值。

为了解决这个问题,我需要一个额外的行,它看起来像这样:

@app.route('/delete/<id>') # current line
@app.route('/delete',defaults={'id': None}) # added line which handles None

在 delete(id) 中,您必须处理 id 为 None 的情况:

if id is None:
    ... # what should happen if id is None

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。