【发布时间】:2020-11-28 11:17:18
【问题描述】:
我创建了一个愿望清单页面,其中列出了用户希望列出的项目。用户可以通过单击“删除”按钮从愿望清单中删除任何项目。单击删除按钮后,HTML <form> 将其提交给后端应用程序。然后后端应用程序从愿望清单数据库中删除该项目并使用return redirect(url_for('wishlist')) 重定向回同一页面。
我面临的问题是,如果用户在从愿望清单中删除项目后返回,他必须返回两次才能到达用户来自的页面。这是由于我在删除显示更新的愿望清单所必需的项目后执行的重定向。
我也尝试过render_template() 而不是redirect(),但它也导致了同样的问题。
后端代码:
@app.route('/wishlist/',methods=['GET','POST'])
@login_required
def wishlist():
userid=current_user.get_id()
if request.method=='POST':
toRemove=request.form['remove']
deleteWish=session.query(Wishlist).filter_by(userId=userid,productId=toRemove).one()
session.delete(deleteWish)
session.commit()
return redirect(url_for('wishlist'))
subquery=session.query(Wishlist.productId).filter(Wishlist.userId==userid).subquery()
wishes=session.query(Products).filter(Products.id.in_(subquery))
return render_template("wishlist.html",wishes=wishes)
HTML:
<html>
<body>
{% for wish in wishes %}
<img src={{wish.image_path}} width="150" height="200">
</br>
{{wish.material}}
{{wish.productType}}
</br>
{{wish.price}}
</br>
<form action="{{url_for('wishlist')}}" method="POST" target="_self">
<button name="remove" type="submit" value="{{wish.id}}">Remove</button>
</form>
</br>
{% endfor %}
</body>
</html>
请给我建议一种方法来防止这种情况发生。
【问题讨论】:
-
您可以让 AJAX 处理您的提交,然后重新加载页面。
标签: python flask redirect post back