Flask文档说有2个本地上下文:应用程序上下文和请求上下文。两者都是根据要求创建的,并在完成后拆除。
那么,有什么区别?每个用例有哪些?是否有任何条件只创建其中一个?
答案 0 :(得分:7)
两者都是根据要求创建的,并在完成后拆除。
在请求生命周期中确实如此。 Flask创建应用程序上下文,请求上下文,做一些魔术,破坏请求上下文,破坏应用程序上下文。
应用程序上下文可以在没有请求的情况下存在,这就是您同时拥有这两者的原因。例如,如果我从shell运行,我可以在没有请求的情况下创建app_context
,并且可以访问'current_app`代理。
这是一个设计决策,用于分离关注点,并为您提供不创建请求上下文的选项。请求上下文很昂贵。
在旧的Flask(0.7?)中,您只有请求上下文并使用Werkzeug代理创建了current_app
。因此,应用程序上下文只是创建一个模式。
有关appcontext的一些文档,但您可能已经阅读过它:http://flask.pocoo.org/docs/appcontext/