Python Flask URL构建

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()的特定功能, 该功能可识别用户, 将用户重定向到包含该特定功能实现的确切功能。
Python Flask URL构建

文章图片
【Python Flask URL构建】例如, 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构建的好处
  1. 这样可以避免对URL进行硬编码。
  2. 我们可以动态更改URL, 而不必记住手动更改的硬编码URL。
  3. URL构建透明地处理特殊字符和Unicode数据的转义。
  4. 生成的路径始终是绝对路径, 避免了浏览器中相对路径的意外行为。
  5. 如果你的应用程序放置在URL根目录之外, 例如, 在/ myapplication而不是/中, 则url_for()会为你正确处理。

    推荐阅读