首先我们来讲一下上下文,什么是上下文呢,上下文相当于一个容器,保存了Flask程序运行过程中的一些信息。
Flask中有两种上下文,请求上下文和应用上下文。
1、请求上下文(request content):在Flask中,可以直接在视图函数中使用request这个对象进行获取相关的数据,而request就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request,session。
1.1、request:封装了HTTP请求的内容,针对的是http请求,举例:user = request.args.get("user"),获取的是get请求的参数。
1.2、session:用来记录请求会话中的信息,针对的是用户信息,举例:session["name"] = suer.id,可以记录用户信息,还可以通过session.get("name")获取用户信息。
2、应用上下文(application content):它的字面意思是应用上下文,但它并不是一直存在的,它只是request content 中的一个对app的代理,所谓local proxy。它的作用主要是帮助request 获取当前的应用,它是伴随request而生,随request而灭的。应用上下文的对象有:content_app , g
1.1、current_app: 应用程序上下文,用于存储应用程序中的便量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量。例如:
1)应用的启动脚本是哪个文件,启动指定了哪些参数
2)加载了哪些配置文件,导入了哪些配置
3)连了哪些数据库
4)有哪些public的工具类,常量
5)应用跑在哪个机器上,内存多大
current_app.name
current_app.test_value = "value"
1.2、g变量:g作为Flask程序中的一个临时变量,充当着中间媒介的作用,我们可以通过它传递一些数据,g保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别。g.name = "abc"
3、两者区别:
3.1、请求上下文:保存了客户端和服务器交互的数据
3.2、应用上下文:flask应用程序运行过程中,保存了一些配置信息,比如程序名、数据库连接、应用信息等。