2.2程序和请求上下文

————————————————————前言——————————————————————————————

前面我们说过, 程序实例通过路由来处理请求,那么视图函数就需要可以访问一些对象, 这样才能处理请求。


请求对象就是视图函数需要访问的一个对象, 它封装了客户端发送的http请求。


那么视图函数如何访问请求对象, 一个答案是作为参数穿进去, 但当视图函数需要访问多个对象时, 视图函数看起来会很复杂, 所以Flask使用上下文临时把某些对象变成全局可访问:

from flask import request  #请求对象

@app.route('/')

def index():

    user_agent = request.headers.get('User-Agent')

    return '<p>Your browser is %s</p>' %user_agent


一.Flask的两种上下文——程序上下文和请求上下文。

程序上下文提供两个变量:

    1. current_app: 当前**的程序实例。也就是代码 app = Flask(__name__)的 app变量

    2. g: 处理请求是用作临时存储的对象。

请求上下文提供两个变量:

    1.request:请求对象, 封装了客户端的http请求

    2.session: 用户会话, 存储请求之间需要记住的值的字典

这四个变量非常重要, 如果你现在不理解没关系, 后面章节会举例说明。)

二.只有在上下文被推送以后才能使用上下文提供的变量:

没有推送上下文就使用变量就会出错:

    2.2程序和请求上下文

先推送上下文再使用其提供的变量:

    2.2程序和请求上下文

app.app_context() 可以获得一个程序上下文。