flask路由系统

路由系统

  • 路由的两种写法

    def index():
        return render_template('index.html')
    app.add_url_rule('/index', 'index', index)
    
    
    # 公司里一般用这种方式
    @app.route('/login')
    def login():
        return render_template('login.html')
    
  • 路由加载的源码流程

    - 将url和函数打包成为 rule 对象
    - 将rule对象添加到map对象中。
    - app.url_map = map对象
    
  • 动态路由

    @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()
    
posted @ 2019-11-22 18:31  阿浪阿浪  阅读(95)  评论(0编辑  收藏  举报