更新: 通过传入修正
<input type="hidden" id="commentID" name="commentID" value={{ comment.id }}>
并在我的表单里面检索值与。
commentID = request.form.get('commentID')
Original: 我对Flask完全是个初学者 所以请原谅这是一个愚蠢的问题。我正试图在Flask上添加更新评论的功能。
我确信这是一个不好的做法,但目前,我有一个帖子视图,它是使用你从url_for()给出的post_id参数来显示的。添加评论和写评论的表单都是内置在帖子路径中的(我很确定这不是一个好主意)。
@posts.route("/post/<int:post_id>", methods=['POST', 'GET'])
def post(post_id):
post = Post.query.get_or_404(post_id)
postForm = PostComment()
editForm = PostComment()
if editForm.validate_on_submit():
commentID = request.form.get('comment')
# comment = Comment.query.get_or_404(comment_id) # how do i get the comment id?
comment.content = form.content.data
db.session.commit()
flash("Your comment has been updated successfully.", 'success')
return redirect(url_for('posts.post', post_id=post.id))
if postForm.validate_on_submit():
comment = Comment(user_id=current_user.id, post_id=post_id, content=postForm.content.data)
db.session.add(comment)
db.session.commit()
flash("Your comment has been posted successfully.", 'success')
return redirect(url_for('posts.post', post_id=post.id))
return render_template('posts/post.html', title=post.title, post=post, form=postForm, editForm=editForm)
我可以用这个路由很容易地添加评论,我也可以用另一个路由删除评论。然而,正如上面提到的,我也在尝试添加更新评论的功能。目前,在路径中我有两个表单,一个用于添加评论,另一个用于更新评论。因此,我试图以某种方式从模板中获取评论ID,使用数据库调用它,然后手动更改它。但是,我不太清楚如何获得数据库引用它的评论ID。
这是我的模板的一个片段。
<form method="POST" action="">
{{ editForm.hidden_tag() }}
<fieldset class="form-group">
<div class="form-group">
{{ editForm.content(class="form-control form-control-lg") }}
</div>
<div class="form-group">
{{ editForm.submit(class="btn btn-outline-info") }}
</div>
</form>
如果有人能帮我解决这个问题,那将是非常感激的。另外,如果有谁能让我知道一种改进这种做法的方法(也许是一种为添加编辑评论创建单独路径的方法),那也会非常感激。
非常感谢。
你的问题是,你没有发布一个行 id
在您的表格中。您说您的表格提交的是 {content': 'sdsds', 'submit': 'Comment, csrf: ...}
但这还不足以识别帖子。
你没有显示表单本身,但你应该添加一个隐藏的字段,并将其与 post.id
. 这样一来,你就可以轻松地覆盖内容。