如何解决如何解决错误: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 举报,一经查实,本站将立刻删除。