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)
posted @ 2021-11-17 20:02  libonizhenshuai  阅读(51)  评论(0)    收藏  举报