首页 > 解决方案 > Flask - POST请求后重定向到新页面

问题描述

我的站点上有一个编辑按钮,它将执行一个 POST-Request,然后我想被重定向到new.html,其中包含一个包含我的 POST 数据的表单。

我的 js 文件中的 POST 请求:

async function onEditBtn() {
    // find correct entry in schedule
    const data = schedule.find(meeting => meeting.id == rowIdOfContextMenu);
    rowIdOfContextMenu = -1;

    const response = await fetch("editmeeting", {
        method: 'POST',
        body: data});
}

接收 Flask 路由:

@app.route('/editmeeting', methods=['POST'])
def edit():
    data = request.get_json()
    print(data)
    return render_template('new.html', data)

POST 请求成功,但我没有被重定向到new.html.

如果我使用window.location.href = "<route to my edit page>";window.location.replace();在 js 端使用从 POST 请求获得的响应,我的编辑页面将不会获得 POST 数据。

编辑:我正在寻找的是window.location.hrefPOST 而不是 GET。

我最终使用了 Flask 的会话对象。发出 POST 请求/editmeeting,将 POST 数据保存在会话对象中,然后new.html使用window.location.href我的 js 代码手动将我的页面重定向到另一个路由渲染,并使用存储在会话中的数据。

谢谢你的回答!

标签: pythonflaskredirecthttp-post

解决方案


您可以将 GET 方法添加到此函数

@app.route('/editmeeting', methods=['GET', 'POST']

或将此添加到您的导入中

from flask import Flask, redirect, url_for

并将函数的返回更改为类似的内容(仅当“新”确实是您的应用程序中的一个函数时才有效。

return redirect(url_for('new'))

推荐阅读