本文共 715 字,大约阅读时间需要 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: 用户会话, 存储请求之间需要记住的值的字典
(这四个变量非常重要, 如果你现在不理解没关系, 后面章节会举例说明。)
二.只有在上下文被推送以后才能使用上下文提供的变量:
没有推送上下文就使用变量就会出错:
先推送上下文再使用其提供的变量:
app.app_context() 可以获得一个程序上下文。