AppContext和RequestContext都有push、pop、enter、exit方法
Flask与AppContext
Flask存储在AppContext中
提供了注册路由,存储配置信息等
真正取数据的时候,是从AppContext中取值,而不是直接从Flask中取,因为有些数据不是属于Flask的,还有一些外部的数据,将Flask和外部数据一同存储到AppContext中
Request与RequestContext
Request存储在RequestContext中
保存了请求信息
那为什么使用的时候不导入Context
_request_ctx_stack和_app_ctx_stack是两个通过LocalStack实例化的栈。
app入栈
当一个请求入栈时,需要检查_app_ctx_stack中是否为空,如果为空则将AppContext入栈
请求入栈
在一个请求进来的时候,在app入栈之后,将RequestContext把数据压入(push)到_request_ctx_stack栈中