【发布时间】:2020-05-16 21:11:37
【问题描述】:
我正在通过打开模式填写表单(对项目的评论),我希望用户能够在提交后最终编辑该表单。
我目前正在从 jinja 模板触发模式,并且表单重定向到路由。
我怎样才能从我的新路线edit_review 重新打开模式,让用户有机会编辑他们的评论?
我在模态中的表单标签是:
<form method=POST action="{{ url_for('review_perfume', id=perfume._id) }}" id="form-review">
而我的review_perfume 路线是:
@app.route("/perfume/review/<id>", methods=["POST", "GET"])
@login_required
def review_perfume(id):
form = AddReviewForm()
perfume = mongo.db.perfumes.find_one({"_id": ObjectId(id)})
if form.validate_on_submit():
review_id = ObjectId.from_datetime(datetime.utcnow())
mongo.db.perfumes.update(
{"_id": perfume["_id"]},
{
"$push": {
"reviews": {
"_id": review_id,
"review_content": form.review.data,
"reviewer": current_user.username,
"date_reviewed": datetime.utcnow(),
"reviewer_picture": current_user.avatar,
}
}
},
)
flash("Your review has been received", "success")
return redirect(url_for("perfume", id=perfume["_id"]))
return redirect(url_for("perfume", id=perfume["_id"]))
我的edit_review 路线将包括:
@app.route("/edit_review/<review_id>/<perfume_id>")
@login_required
def edit_review(review_id, perfume_id):
mongo.db.perfumes.update(
{"_id": ObjectId(perfume_id), "reviews._id": ObjectId(review_id)},
{"$set": {"reviews.$.review_content": "This is my newest content."}},
)
flash("Your review has been updated!", "success")
return redirect(url_for("perfume", id=perfume_id))
(使用表单中的正确数据)但我想知道如何从中打开模式以更新我的数据库。
请帮忙?
谢谢!!
【问题讨论】:
标签: python mongodb flask jinja2