url_for()函数用于动态构建指向特定函数的URL。第一个参数是指定函数的名称, 然后我们可以传递与URL的可变部分相对应的任意数量的关键字参数。
从可以避免通过使用此功能动态构建URL来避免将URL硬编码到模板的意义上, 此功能很有用。
考虑以下python flask脚本。
例子
from flask import *
app = Flask(__name__)
@app.route('/admin')
def admin():
return 'admin'
@app.route('/librarion')
def librarion():
return 'librarion'
@app.route('/student')
def student():
return 'student'
@app.route('/user/<name>')
def user(name):
if name == 'admin':
return redirect(url_for('admin'))
if name == 'librarion':
return redirect(url_for('librarion'))
if name == 'student':
return redirect(url_for('student'))
if __name__ =='__main__':
app.run(debug = True)
上面的脚本模拟了可以由三种类型的用户(即admin, librarion和Student)使用的图书馆管理系统。有一个名为user()的特定功能, 该功能可识别用户, 将用户重定向到包含该特定功能实现的确切功能。
例如, URL http:// localhost:5000 / user / admin重定向到URL http:// localhost:5000 / admin, URL localhost:5000 / user / librarion重定向到URL http:// localhost:5000 / librarion, URL http:// localhost:5000 / user / student被重定向到URL http:// localhost / student。
动态URL构建的好处
- 这样可以避免对URL进行硬编码。
- 我们可以动态更改URL, 而不必记住手动更改的硬编码URL。
- URL构建透明地处理特殊字符和Unicode数据的转义。
- 生成的路径始终是绝对路径, 避免了浏览器中相对路径的意外行为。
- 如果你的应用程序放置在URL根目录之外, 例如, 在/ myapplication而不是/中, 则url_for()会为你正确处理。
评论前必须登录!
注册