Flask源码学习笔记1:实例创建,消息流转 | 天一阁

Flask源码学习笔记1:实例创建,消息流转

最简单的Flask web程序就是这么几行

1
2
3
4
5
6
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'

其实这里是创建了一个Flask实例app, app这个对象有符合WSGI规范的__call__接口,外部进程会把app当做一个模块进行调用。

在Flask内部,wsgi_app调用dispatch_request函数,最终调用self.view_functions[rule.endpoint](**req.view_args)

这里view_function就是在应用中通过@app.route关联的视图函数。视图函数进行业务处理,有的MVC框架管这个函数也叫controller。

Flask框架得到视图函数的返回值后,会把返回值按WSGI规定,处理为response对象。最后通过底层werkzeug的Response返回相应的结果。

流程上其实也不复杂,只是和其他框架一样,太多地方绕来绕去,不知道是不是OO功底太差,两三次类的替换,我就晕了。不过暂时也没必要扣细节了,先把整体流程明白了就好了