Flask学习笔记---上下文

来源:互联网 发布:我的世界js透视 编辑:程序博客网 时间:2024/06/05 23:44

理解原理:线程局部变量--Threading.local

上下文保存了Flask程序运行过程中的一些信息

分类:请求上下文  应用上下文

请求上下文:request  session

理解:Flask从客户端收到请求时候,要让视图函数能访问一些对象,才能处理请求,而请求对象可以封装客户端发送的HTTP请求。

想让视图函数能够访问请求对象,可以将其作为参数传入视图函数,但会出现问题:

1.程序中每个视图函数都增加一个参数

2.视图函数处理请求时候还要访问其他对象

3.可能会导致视图函数处理一大堆可以可无的参数

解决:Flask使用上下文方式,临时把请求对象变为全局可访问。

1.application指的是当调用app=Flask(__name__)创建的这个对象app;

2.request指的是每次http请求发生时,WSGI server 调用Flask.__call__(),在Flask对象内部创建的Request对象;

3.application表示用于响应WSGI请求的应用本身,request表示每次http请求;

4.application 的生命周期大于request,在一个application存活周期内,可能发生多次http请求,所以会有多个request;

5.最终传入视图函数,通过return redirect /render_template生成response对象,返回给客户端

应用上下文:current_app  g

应用上下文不是一直存在的,作用是帮助request获取当前的应用,伴随request存或亡。

current_app.name  

current_app.test_value = "value"

应用程序上下文可用于存储应用程序中的变量,也可通过以上获取当前app名称或者存储某些变量

1.应用的启动脚本是哪个文件,启动时指定了哪些参数

2.加载了哪些配置文件,导入了哪些配置

3.连了哪个数据库

4.有哪些public的工具类和常量

5.应用跑在哪台机器上,IP多少,内存多大

g变量:

1.作为flask程序全局的一个临时变量,充当中间媒介的作用;

2.可通过它传递一些数据,g变量一般保存的是当前请求的全局变量;

3.不同的请求会有不同的全局变量,可通过thread id 区别。

区别:

请求上下文:保存了客户端和服务器交互的数据

应用上下文:应用程序运行过程中,保存了一些配置信息,比如程序名/数据库连接/应用信息等等



原创粉丝点击