1、使用装饰器:@app.route("/"),最终也是通过 add_url_rule实现的

@app.route("/home")
def home():
  return "home视图"

 2、使用 app.add_url_rule

def home():
  return "home视图"

app.add_url_rule("/home",endpoint="home",view_func=home)

 

 

 

add_url_rule源码中 也有实例如下:

 

 

flask中蓝图的运行机制

    • 蓝图是保存了一组将来可以在应用对象上执行的操作,注册路由就是一种操作

    • 当在app对象上调用 route 装饰器注册路由时,这个操作将修改对象的url_map路由表

    • 然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项

    • 当执行app对象的 register_blueprint() 方法时,应用对象app将从蓝图对象的 defered_functions 列表中取出每一项,并以自身作为参数执行该匿名函数,即调用应用对象app的 add_url_rule() 方法,这将真正的修改应用对象app的url_map路由表

 

 

 

 posted on 2019-12-05 19:25  墨语i  阅读(695)  评论(0)    收藏  举报