在烧瓶上从“ POST”路由重定向到“ GET”路由

时间:2019-08-07 13:37:06

标签: python redirect flask url-for

如果要满足某些条件,我想从方法已设置为“ POST”的路由重定向到另一个url(该路由的方法默认为“ GET”)。当我从终端检查时,将调用“ GET”路由,但不会从浏览器进行重定向。我正在使用'url_for'在烧瓶中做到这一点。有帮助吗?

我尝试在_method中使用url_for参数,即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 -

2 个答案:

答案 0 :(得分:0)

您确定您的“ some_data”值为“无”吗?重定向通常应该只适用于普通的url_for用法,即使您从发布重定向到获取,例如:

@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)

答案 1 :(得分:0)

您可以只返回呈现模板的函数的名称

@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)