路由系统

  • 路由的两种写法

    1.第一种方法:
    def index():
    return render_template('index.html')
    app.add_url_rule('/index', 'index', index) 2. 公司里一般用这种方式
    @app.route('/login')
    def login():
    return render_template('login.html')

    解析

    1.  第一种方法中执行"add_url_rule"方法,这个方法里边需要的参数解析:
    def add_url_rule(
    self,
    rule,
    endpoint=None,
    view_func=None,
    provide_automatic_options=None,
    **options
    ):
    self:是当前这个app对象;
    rule: 当前这个路由:'/login'
    endpoint: 当前这个视图的别名;
    view_func: 指定执行的视图函数 2.第二种:@app.route('/login'),第二种的这个方法其实内部都是调用了"add_url_rule"这个方法;内部实现都是一样的。
  • 路由加载的源码流程

    - 将url和函数打包成为 rule 对象
    # rule = self.url_rule_class(rule, methods=methods, **options)
    - 将rule对象添加到map对象中。
    # self.url_map.add(rule)
    - app.url_map = map对象
    # self.url_map = self.url_map_class()
  • 动态路由

    @app.route('/login')
    def login():
    return render_template('login.html') @app.route('/login/<name>')
    def login(name):
    print(type(name))
    return render_template('login.html') @app.route('/login/<int:name>')
    def login(name):
    print(type(name))
    return render_template('login.html')
  • 支持正则表达式的路由

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    from werkzeug.routing import BaseConverter
    class RegConverter(BaseConverter):
    def __init__(self, map, regex):
    super().__init__(map)
    self.regex = regex
    app.url_map.converters['regex'] = RegConverter @app.route('/index/<regex("\d+"):x1>')
    def index(x1):
    return render_template('index.html') if __name__ == '__main__':
    app.run()
  DEFAULT_CONVERTERS = {
"default": UnicodeConverter,
"string": UnicodeConverter,
"any": AnyConverter,
"path": PathConverter,
"int": IntegerConverter,
"float": FloatConverter,
"uuid": UUIDConverter,
} 1. flask中提供了这些动态路由的方法,针对不同的值有着不同的操作方法,装换成不同的类型值;
2. 并且flask也支持自定义的正则表达式的路由

最新文章

  1. 锋利的jQuery-读书笔记(二)
  2. ASP开发中服务器控件和普通控件的区别
  3. 【转】玩转log4j
  4. Sql日期时间格式转换;取年 月 日,函数:DateName()、DATEPART()
  5. hdu 4738
  6. iOS屏蔽高频点击技巧
  7. 【创业积累】如何快速开发出一个高质量的APP
  8. Batch Normalization原理
  9. Python 正则表达式相关问题
  10. kafka学习笔记整理01
  11. python-模块的导入import
  12. Java 中 synchronized的用法详解(四种用法)
  13. 转: linux进程地址图解
  14. vc++之stdafx.h
  15. Windows中的时间(SYSTEMTIME和FILETIME) (转载)
  16. scala-- 内建控制结构
  17. js实现拉伸拖动iframe的具体代码
  18. kafka集群与zookeeper集群 配置过程
  19. ubuntu 18.04 - server版 开机启动脚本
  20. 关于单一网络适配器拓扑TMG

热门文章

  1. Ext CheckBoxGroup使用
  2. 【老孟Flutter】Stateful 组件的生命周期​
  3. eclips快捷键
  4. ESP8266-01烧录神器,ESP8266-01S烧录程序 ESP-01烧录固件
  5. mysql提权神器
  6. 关于领域驱动架构DDD思考
  7. 第三章 IP地址规划设计技术(很重要)
  8. Spring Boot 2.x基础教程:实现文件上传
  9. 多图详解Go中的Channel源码
  10. CQRS与Event Sourcing之浅见