Flask 应用上下文(Application Context)是 Flask 中一个非常重要的概念,它代表了应用程序的运行环境,允许在整个应用程序中共享一些资源和状态。应用上下文在处理请求时被自动创建和推送,并在请求处理完成后被自动弹出。

以下是一些关于 Flask 应用上下文的重要信息:

1. 应用上下文的创建和推送: Flask 在每个请求处理之前会自动创建一个应用上下文,并将其推送到上下文栈中。这个过程是自动的,你无需手动介入。

2. 应用上下文的弹出: 在请求处理完成后,Flask 会自动将应用上下文从上下文栈中弹出。这是为了确保上下文的正确管理,防止资源泄漏等问题。

3. g 对象: 在应用上下文中,你可以使用 g 对象来存储全局变量,这些变量在整个请求生命周期内保持不变。这对于在请求处理过程中传递一些状态信息非常有用。

4. current_app 对象: 在应用上下文中,可以通过 current_app 对象访问当前的 Flask 应用实例,即使你在不同的模块或函数中。

以下是一个简单的示例,演示了应用上下文的使用:
from flask import Flask, g, current_app

app = Flask(__name__)

# 在请求开始时被调用
@app.before_request
def before_request():
    # 在 g 对象中存储一个变量,它将在整个请求周期内保持不变
    g.my_variable = "This is a variable in g"

# 定义一个路由
@app.route('/')
def index():
    # 访问 g 对象中的变量
    variable_from_g = g.my_variable

    # 访问 current_app 对象
    app_name = current_app.name

    return f'Variable from g: {variable_from_g}, Current App Name: {app_name}'

if __name__ == '__main__':
    app.run(debug=True)

在这个示例中,before_request 装饰器用于在每个请求开始时调用 before_request 函数,该函数在 g 对象中存储了一个变量。在路由处理函数中,我们访问了 g 对象中的变量和 current_app 对象。这些信息在整个请求周期内是可用的。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7327/Flask