如果要满足某些条件,我想从方法已设置为“ 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 -
答案 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)