推荐答案
在 Flask 中,可以使用 redirect() 函数来实现重定向。redirect() 函数接受一个 URL 作为参数,并将用户重定向到该 URL。通常与 url_for() 函数结合使用,以生成动态 URL。
// www.javascriptcn.com code example
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('hello'))
@app.route('/hello')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run()在这个例子中,访问根路径 / 时,用户会被重定向到 /hello 路径。
本题详细解读
1. redirect() 函数
redirect() 函数是 Flask 提供的一个工具,用于将用户重定向到另一个 URL。它接受一个 URL 字符串作为参数,并返回一个 Response 对象,该对象的 HTTP 状态码为 302(临时重定向)。
from flask import redirect
@app.route('/old')
def old_page():
return redirect('/new')在这个例子中,访问 /old 路径时,用户会被重定向到 /new 路径。
2. url_for() 函数
url_for() 函数用于生成 URL。它接受视图函数的名称作为参数,并返回该视图函数对应的 URL。使用 url_for() 可以避免硬编码 URL,使代码更加灵活和可维护。
// www.javascriptcn.com code example
from flask import url_for
@app.route('/')
def index():
return redirect(url_for('hello'))
@app.route('/hello')
def hello():
return 'Hello, World!'在这个例子中,url_for('hello') 会生成 /hello 路径的 URL,然后 redirect() 函数将用户重定向到该 URL。
3. 重定向的状态码
默认情况下,redirect() 函数使用 302 状态码进行重定向。如果需要使用其他状态码(如 301 永久重定向),可以将状态码作为第二个参数传递给 redirect() 函数。
@app.route('/old')
def old_page():
return redirect('/new', code=301)在这个例子中,访问 /old 路径时,用户会被永久重定向到 /new 路径。
4. 重定向到外部 URL
redirect() 函数不仅可以重定向到应用内部的 URL,还可以重定向到外部 URL。
@app.route('/external')
def external_redirect():
return redirect('https://www.example.com')在这个例子中,访问 /external 路径时,用户会被重定向到 https://www.example.com。