Flask 入门教程 Flask 应用上下文

2024-02-25 开发教程 Flask 入门教程 匿名 4

0.9 新版功能.

Flask 背后的设计理念之一就是,代码在执行时会处于两种不同的“状态”(states)。 当 ​Flask​ 对象被实例化后在模块层次上应用便开始隐式地处于应用配置状 态。一直到第一个请求还是到达这种状态才隐式地结束。当应用处于这个状态的时候 ,你可以认为下面的假设是成立的:

  • 程序员可以安全地修改应用对象
  • 目前还没有处理任何请求
  • 你必须得有一个指向应用对象的引用来修改它。不会有某个神奇的代理变量指向 你刚创建的或者正在修改的应用对象的

相反,到了第二个状态,在处理请求时,有一些其它的规则:

  • 当一个请求激活时,上下文的本地对象( ​flask.request​ 和其它对象等) 指向当前的请求
  • 你可以在任何时间里使用任何代码与这些对象通信

这里有一个第三种情况,有一点点差异。有时,你正在用类似请求处理时方式来 与应用交互,即使并没有活动的请求。想象一下你用交互式 Python shell 与应用 交互的情况,或是一个命令行应用的情况。

current_app​ 上下文本地变量就是应用上下文驱动的。