flask项目启动阶段源码流程
实例化Flask对象
app = Flask(__name__)
点击查看代码
1.对app对象封装一些初始化的值。
app.static_folder
app.static_url_path
app.template_folder
app.view_function = {}
2.添加静态文件的路由
self.add_url_rule(
self.static_url_path + "/<path:filename>",
enpoint = "static",
host = static_host,
view_func = self.send_static_file
)
3.实例化url_map对象,以后在map对象中放路由和视图函数的对应关系
class Flask(object):
url_rule_calss = Rule
url_map_class = Map
def __init__(self...):
self.static_folder
self.static_url_path
self.template_folder
self.view_function = {}
self.url_map = self.url_map_class()
app = Flask(__name__)
app.view_functions
app.url_rule_class
加载配置文件(给app的config进行赋值)
app.config.from_object('xx.xx')
1.读取配置文件中的所有键值对,并将键值对全都放到config对象。(config是一个字典)
2.把包含所有配置文件的config对象,赋值给 app.config
添加路由映射
1.将 url = /index 和methods = ['GET', 'POST'] 和 endpoint = 'index'封装到Rule对象
2.将Rule对象添加到url_map中
3.把endpoint和函数的对应关系放到 app.view_functions中。
截至目前
app.config
app.url_map
app.view_functions
运行flask
点击查看代码
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
return 'hello world!'
if __name__ == "__main__":
app.run()
1.内部调用werkzeug的run_simple,内部创建socket,监听IP和端口,等待用户请求到来。
2.一旦有用户请求,执行app.__call__方法。
点击查看代码
class Flask(object):
def __call__(self, envion, start_response):
pass
def run(self):
run_simple(host, port, self, **options)

浙公网安备 33010602011771号