url_for
url_for 函数根据传入的端点名称(即路由函数名)生成对应的 URL。
1. url_for()
url_for 函数根据传入的端点名称(即路由函数名)生成对应的 URL。
它接受一个或多个参数,其中第一个参数是路由的名称(也称为端点),其余参数是动态路由部分的值或查询字符串参数。这个函数会根据你的路由配置动态地生成 URL。
用途:
在模板或视图中生成指向其他路由的链接。
避免在代码中硬编码 URL,使应用更加灵活和可维护。
示例:
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
# 生成指向 /user/123 的 URL
user_url = url_for('user_profile', user_id=123)
return f'Go to <a href="{user_url}">User Profile</a>'
@app.route('/user/<int:user_id>')
def user_profile(user_id):
return f'User ID: {user_id}'
if __name__ == '__main__':
with app.test_request_context():
print(url_for('index')) # 输出: /
print(url_for('user_profile', user_id=123)) # 输出: /user/123
2. redirect()
redirect() 函数用于执行 HTTP 重定向。
当调用这个函数时,它会生成一个响应对象,该对象包含一个状态码(通常是 302,表示临时重定向,或者 301,表示永久重定向)和一个 Location 头部。
该头部包含了目标 URL。当浏览器接收到这个响应时,它会自动向新的 URL 发起请求。
用途:
表单提交后重定向到另一个页面,以避免表单重复提交(Post/Redirect/Get 模式)。
当用户尝试访问已移动的资源时,将其重定向到新位置。
在用户完成某项操作(如登录或注册)后,将其重定向到另一个页面。
示例:
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/login')
def login():
# 假设这里有一些登录逻辑
# 登录成功后重定向到主页
return redirect(url_for('index'))
@app.route('/')
def index():
return 'Welcome to the home page!'
if __name__ == '__main__':
app.run(debug=True)