Flask 请求上下文(Request Context)是与每个 HTTP 请求相关联的上下文。它包含了有关当前请求的信息,使得你能够在请求处理的任何地方访问请求对象以及其他与请求有关的信息。Flask 在每个请求处理时自动创建请求上下文,并在请求处理结束后关闭它。

以下是 Flask 请求上下文的一些关键特点和作用:

1. 请求对象 (request): 请求上下文包含了一个 request 对象,它提供了对当前请求的访问。你可以从 request 对象中获取请求的参数、表单数据、文件上传等信息。
    from flask import request

    @app.route('/example')
    def example():
        # 获取请求参数
        param_value = request.args.get('param_name')
        # 获取表单数据
        form_data = request.form['key']
        # 获取上传的文件
        uploaded_file = request.files['file']
        # ...

2. 会话对象 (session): 如果你在应用中启用了会话支持,请求上下文也包含了一个 session 对象,用于存储和访问会话数据。
    from flask import session

    @app.route('/login', methods=['POST'])
    def login():
        # 在会话中存储用户信息
        session['user_id'] = get_user_id()
        # ...

3. 全局变量 (g): 请求上下文中的 g 对象是一个用于在整个请求生命周期内共享状态的空间。
    from flask import g

    @app.before_request
    def before_request():
        # 在 g 对象中存储信息
        g.user = get_current_user()

4. 应用上下文 (current_app): 请求上下文中可以访问当前 Flask 应用实例,即 current_app 对象。
    from flask import current_app

    @app.route('/')
    def home():
        # 访问当前应用实例
        app_name = current_app.name

5. 推送和弹出: 请求上下文通过 app.test_request_context() 或在 Flask 视图函数中创建,然后通过 with 语句推送到上下文栈中。请求处理结束后,上下文会自动弹出。
    with app.test_request_context('/'):
        # 在这里执行与请求相关的任务
        print(request.path)

总的来说,Flask 请求上下文是在请求处理期间提供访问请求相关信息的关键机制,使得你能够方便地处理和操作与请求相关的数据。


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