Flask route的源码分析
flask的例子
from flask import Flask
app = Flask(__name__)
@app.route('/',methods=['GET'])
def index():
return "hello world"
if __name__ == '__main__':
app.run()
使用app.route装饰器,完成了url与视图函数的映射
在flask中使用了werkzueg的Rule类、Map类和MapAdapter类实现了{url:endpoint:view_func}的映射关系
route装饰器在app.py的Flask类中
def route(self, rule, **options):
def decorator(f):
endpoint = options.pop('endpoint', None)
self.add_url_rule(rule, endpoint, f, **options)
return f
return decorator
通过装饰器将url传入到add_url_rule当中的rule,methods以**options关键字参数传入到add_url_rule中