【发布时间】:2020-06-11 16:30:19
【问题描述】:
我构建了一个 CRUD 应用程序,它已经运行得很好,但是在删除数据库中的条目后,重定向(即呈现主页模板)到主页不起作用。
def create_venue_submission():
name = request.form["name"]
city = request.form["city"]
try:
venue = Venue(
name=name,
city=city,
)
db.session.add(venue)
db.session.commit()
flash("Venue " + request.form["name"] + " was successfully listed!")
except:
flash(
"An error occurred. Venue " + request.form["name"] + " could not be listed."
)
db.session.rollback()
print(sys.exc_info())
finally:
db.session.close()
return render_template("pages/home.html")
这非常有效,重定向有效。但是,以下没有(请参阅最后一行代码的注释)
@app.route("/venues/<venue_id>", methods=["DELETE"])
def delete_venue(venue_id):
try:
venue_to_delete = Venue.query.get(venue_id)
db.session.delete(venue_to_delete)
db.session.commit()
print("delete that crap")
flash(f"Venue {venue_id } was successfully deleted")
except:
db.session.rollback()
print(sys.exc_info())
flash(f"An error occurred: Venue {venue_id } cound not be deleted")
finally:
db.session.close()
return render_template("pages/home.html") ### This never gets triggered.
我在前端这样触发这条路由:
<button
id="delete-venue"
data-id="{{ venue.id }}"
class="btn btn-default btn-sm"
>
Delete
</button>
<script>
const deleteVenueBtn = document.getElementById("delete-venue");
deleteVenueBtn.onclick = function(e) {
const venueId = e.target.dataset["id"];
console.log(`DELETE /venues/${venueId}`);
fetch(`/venues/${venueId}`, {
method: "DELETE"
});
};
</script>
在数据库中删除了正确的条目,但之后没有任何反应。我不知道,为什么这不起作用。我看不到代码本身的错误。谁能帮助我或解释一下这种奇怪的行为?
【问题讨论】:
标签: python flask flask-sqlalchemy flask-wtforms