我是Flask的初学者 - Python。现在我正在创建评论功能。在下面的代码中,我可以列出博客的所有评论或类似的东西。但现在,我想创建删除每个博客的按钮。请告诉我如何将blog_id
(现在保存为user_comment._id
)发送到服务器以及如何在服务器上请求它。
{% for user_comment in user_comments %}
<form action="{{ url_for('comments.del_comment') }}" method="post">
<ul class="comments-list">
<li class="comment">
<a class="pull-left" href="#">
<img class="avatar" src="http://bootdey.com/img/Content/user_1.jpg" alt="avatar">
</a>
<div class="comment-body">
<div class="comment-heading">
<h4 class="user">{{ user_comment.email }}</h4>
<h5 class="time">{{ user_comment.created_date }}</h5>
</div>
<p>{{ user_comment.comment }}</p>
</div>
</li>
<li>
<button type="submit" class="btn btn-primary">Delete</button>
</li>
</ul>
</form>
{% endfor %}
答案 0 :(得分:3)
实际上,您可以将每个注释的ID存储在按钮的数据属性中。然后定义类似'/comments/<id>/delete/'
的路线以删除评论。为了防止仅通过在浏览器中调用URL来删除注释,我建议仅限路由到DELETE方法并通过ajax请求调用它。
因此,请将以下路线添加到views.py
@main.route('/comments/<comment_id>/delete', methods=['DELETE'])
def delete_comment(comment_id):
comment = Comment.query.get(comment_id)
if comment is None:
return jsonify(
status='error', message='no comment with id {}'.format(comment_id))
db.session.delete(comment)
db.session.commit()
return jsonify(status='ok')
您的删除按钮应如下所示:
<button href="" class="btn btn-primary delete_comment" data-id="{{ user_comment.id }}/>
在你的模板中添加一个小的ajax请求:
<script>
$(document).ready(function() {
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
// Delete comment
$('.delete_comment').click(function(event) {
var comment_id = $(this).data('id');
var url = $SCRIPT_ROOT + '/comments/' + comment_id + '/delete';
$.ajax({
url: url,
type: 'DELETE',
}).done(function(data) {
location.reload();
});
});
});
</script>
答案 1 :(得分:0)
为按钮指定名称和值:
<input type="submit" name ="btn1" value="delete_blog " class="btn btn-primary" />
如下所示,用烧瓶调用按钮:
def delete_blog():
if request.method == 'POST':
if request.form['btn1'] == 'delete_blog':
pass # do something
else:
pass # do something else
elif request.method == 'GET':
return render_template('blog.html', form=form)
我希望有所帮助,这个问题有点令人困惑。