在 flask 上从 'POST' 路由重定向到 'GET' 路由

redirecting on flask from a 'POST' route to a 'GET' route

如果满足某些条件,我想从方法已设置为 'POST' 的路由重定向到另一个 url(方法默认为 'GET' 的路由) . 'GET' 路由在我从终端检查时被调用,但重定向不会从浏览器发生。我正在使用 'url_for' 在烧瓶中执行此操作。有帮助吗?

我试过在 url_for 中使用 _method 参数,即 return redirect(url_for('second', _method='GET')

这是一些代码:

@app.route('/first', methods=['POST'])
def first():
    some_data = request.get_json(force=True)
    if some_data is None:
       return redirect(url_for('second', _method='GET'))
     session['data_to_use'] = some_data
    return jsonify(some_data)
@app.route('/second')
def second():
    return render_template('second.html')

这是我在终端上得到的:

"POST /first HTTP/1.1" 302 -
 "GET /second HTTP/1.1" 200 -

您确定您的 "some_data" 值为 None 吗?重定向通常只适用于普通的 url_for 用法,即使您是从 post 重定向到 get,像这样:

@app.route('/first', methods=['POST'])
def first():
    some_data = request.get_json(force=True)
    if some_data is None:
        return redirect(url_for('second'))
    session['data_to_use'] = some_data
    return jsonify(some_data)

您可以 return 呈现模板的函数的名称

@app.route('/first', methods=['POST'])
def first():
    some_data = request.get_json(force=True)
    if some_data is None:
       return second()
     session['data_to_use'] = some_data
    return jsonify(some_data)