flask框架中在jinja2模板中调用视图函数但是不想重定向怎么办


我想调用视图函数delete,但是不想重定向到delete这个页面可以实现吗?

阅读 4.8k
2 个回答

按照我的理解我觉得你是想删除的时候不刷新页面,如果是这样那就要用一下ajax了,用ajax把id传给相关的处理视图,然后在视图里面获取传过来的id把它删掉,代码:

function deleteUser(userid) {

    var post_data = {
        'userid': userid,
    }

    $.ajax({
        type: "POST",
        url: "/deleteuser",
        data: JSON.stringify(post_data, null, '\t'),
        contentType: 'application/json;charset=UTF-8',
        success: function(result) {
            // 传完数据之后做某些处理
            ...
        }
    });
}

在flask里面的视图:

@main.route('/deleteuser', methods=['POST'])
def delete_user():
    if request.method == 'POST':
        user_id = request.json['userid']
        user = User.query.get_or_404(user_id)
        db.session.delete(user)
        db.session.commit()
        return 'OK'// 这里你返回你要在页面上更新的数据,用来在上面的ajax里面的success部分做处理

这样可以实现不刷新页面删除指定的用户

如果不想跳转,可以考虑使用 AJAX 方式访问删除动作的 URL,删除完成之后,再刷新当前页面。


你使用的跳转的方式,一般删除完了之后要跳回到当前页面,以便显示最新的结果

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题