link:
关于flask的源码解析,链接的博文解释的比较清晰,这里我结合自己的思路整理一下
Flask==1.1.1 Werkzeug==0.15.4
路由
- 路由用的最多的就是装配器这种用法了
@app.route('/')
- 看一下这个装配器的逻辑
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
- 结果很明确,在装配器里调用了
add_url_rule
方法
def add_url_rule(
self,
rule,
endpoint=None,
view_func=None,
provide_automatic_options=None,
**options
):
if endpoint is None:
# 如果没有endpoint,就使用view function 的名字
endpoint = _endpoint_from_view_func(view_func)
options["endpoint"] = endpoint
methods = options.pop("methods", None)
# 省略...
# Add the required methods now.
methods |= required_methods
rule = self.url_rule_class(rule, methods