1. 上下文概念与Flask上下文对象分类
上下文: 即语境,语意, 在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情
Flask上下文对象分类:
1. 请求上下文: request session
2. 应用上下文: current_app g对象
2. 请求上下文之request与session
request: 封装了HTTP请求的内容,针对的是HTTP请求,请求的数据封装在request对象中,比如查询参数,文件数据等
session: 用来记录请求会话中的信息,针对的是用户信息
3. 应用上下文current_app与g对象
current_app:事实上是Flask实例的代理,由于一个项目只能有一个app实例,在其他地方使用app需要导入,不方便使用,current_app就是APP的全局代理,在代码不方便操作flask的APP对象时,可以操作current_app就等价于操作APP实例
current_app用于存储应用程序中的变量:
1. 应用的启动脚本是哪个文件,启动时指定了哪些参数
2. 加载了那些配置文件,导入了哪些配置
3. 连接了哪个数据库
4. 有哪些public的工具类, 常量
5. 应用跑在哪个机器上,IP是多少,内存有多大等信息
g对象:作为flask程序全局的一个临时变量, 充当中间媒介的作用, 我们可以通过它在一次请求调用的多个函数间传递一些数据, 相当与一个共享的数据容器, 每次请求都会重设这个变量
4. 手动开启上下文
在flask程序为运行的请求下,调试代码或者进行测试,同杨需要使用current_app, g, request这些对象,但程序未运行,所以无法使用,此时需要手动开启上下文
app_context为我们提供了应用上下文环境,允许我们在外部使用应用上下文current_app, g, 可以通过with语句进行使用
request_context为我们提供了上下文环境,允许我们在外部使用请求上下文request、session可以通过with语句进行使用