注:
参数名称 | 参数说明 | 注释 |
app | Flask 实例化对象 | |
App Context | Flask 上下文 | 封装了Flask对象 |
_app_ctx_stack | Flask 所对应的栈 | |
current_app(Local Proxy) | Flask 对象的代理 | 指向_app_ctx_stack顶端 |
Request | Request 实例化对象 | |
Request Context | Request 上下文 | 封装了Requests对象 |
_request_ctx_stack | Request 所对应的栈 | |
request(Local Proxy) | Request 对象的代理 | 指向_request_ctx_stack顶端 |
流程说明:
1.一个请求进入Flask框架
2.创建一个Request Context对象
3.RequestsContext 在入栈之前会检查 _app_ctx_stack的栈顶元素是否为当前对象,如果是则将RequestContext push到_request_ctx_stack中;如果为空或者不为当前对象,会创建一个AppContext,然后push()到_app_ctx_stack中,在将RequestContext push到_request_ctx_stack中.