flask请求上下文
在分析上下问之前,要做好一个心理准备,因为设计到的代码会很多,需要不懂的要跟着文档自己去翻阅源码。
首先把涉及到的主要的类或者设计到的py页面展示如下图。下面我会以对应类或者页面去讲解flask源码
之前我们已经论述过了,每次请求过来都会触发app()
,所以会触发FLask
类的__call__
方法,__call__
方法会触发Flask
类的wsgi_app()
方法。然后所有的请求的整个生命周期都在整个wsgi_app()
里面了。
根据上图类和序号来完成我们的分析流程。
1 首先分析请求上下文对象(ctx)创立
-
1.0 FLask 类中的
wsgi_app()
中的 ctx = self.request_context(environ) -
1.1 RequestContext类中的
__init__
-
实例化出请求上下文对象ctx
-
并且关注:
if request is None: request = app.request_class(environ) self.request = request
-
-
1.2 Request类中的
__init__