Python Flask-就像没有重新加载页面的帖子

时间:2019-01-21 11:11:29

标签: python flask jinja2 python-3.6

在此先感谢您的帮助!

我有一个flask网站,用户可以在其上发布一些编程代码片段,例如它们,或在每个帖子下写评论。对于每一个动作,删除帖子或喜欢帖子,我已经定义了一条路线,该路线检查用户是否具有执行该操作的足够权限,依此类推。效果很好。

我想要实现的目标:

我希望能够使用这些功能,而不必重新加载页面。我已经尝试过ajax请求,但无法解决。 以下是其中一些路线:

def delete_comment(id):
    comment = Comment.query.get_or_404(id)
    post = Post.query.get_or_404(comment.post_id)
    if comment.user != current_user and post.author != current_user:
        abort(403)
    db.session.delete(comment)
    db.session.commit()
    flash('The comment has been deleted!', 'success')

    return redirect(url_for('main.home'))

如果我删除此评论,则会重定向到我的主页。像这样,如果您不小心喜欢了某个帖子,就不会有什么不同。此外,如果用户滚动到第20个帖子,那么再次向下滚动也很麻烦。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于这些类型的请求,我发现与REST API端点结合使用的javascript效果很好-即创建一个将执行喜欢/不喜欢并返回响应的REST端点,并让按钮/ javascript进行REST调用简单的帖子或获取,然后修改您想要的内容。

@app.route('/api/v1/status', methods=['GET'])
def get_status():
    json_data = json.dumps({'status': get_status()})
    return json_data

类似地,您可以对带有按钮的帖子执行此操作

@app.route('/api/v1/button_update', methods=['PUT'])
def update_button():
    json_data = json.dumps({'status': update_db_state()})
    return json_data 

对于json,您将不得不自己进行遍历,因为这将完全取决于您的页面结构如何提取和更新这些值,所使用的库等。