redirect到Flask中的URL

我是Python和Flask的新手,我正在尝试做与C#Response.redirect等效 – 即:redirect到一个特定的URL – 我该怎么做?

这是我的代码:

 import os from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello World!' if __name__ == '__main__': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port) 

你必须返回一个redirect

 import os from flask import Flask,redirect app = Flask(__name__) @app.route('/') def hello(): return redirect("http://www.example.com", code=302) if __name__ == '__main__': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port) 

请参阅烧瓶文档的文档 。

代码的默认值是302,所以code=302可以省略或用其他redirect代码(301,302,303,305和307中的一个)

 #!/usr/bin/env python # -*- coding: utf-8 -*- import os from flask import Flask, redirect, url_for app = Flask(__name__) @app.route('/') def hello(): return redirect(url_for('foo')) @app.route('/foo') def foo(): return 'Hello Foo!' if __name__ == '__main__': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port) 

看看文档中的例子 。

从Flask API文档 :

烧瓶。 redirectlocationcode=302

返回一个响应对象(WSGI应用程序),如果调用,则将客户端redirect到目标位置。 支持的代码是301,302,303,305和307,不支持300,因为它不是真正的redirect,而是304,因为它是具有定义的If-Modified-Since标头的请求的请求的答案。

0.6版中的新function :该位置现在可以是使用iri_to_uri()函数编码的unicodestring。

参数:

  • location – 响应应该redirect到的位置。
  • code – redirect状态码。 默认为302。
 flask.redirect(location, code=302) 

文档可以在这里find。

我相信这个问题值得更新:只要看看其他方法,并进行比较。

这里是你如何做redirect(3xx)从一个url到另一个在烧瓶(0.12.2):

 #!/usr/bin/env python from flask import Flask, redirect app = Flask(__name__) @app.route("/") def index(): return redirect('/you_were_redirected') @app.route("/you_were_redirected") def redirected(): return "You were redirected. Congrats :)!" if __name__ == "__main__": app.run(host="0.0.0.0",port=8000,debug=True) 

对于其他官方参考, 在这里 。