Flask-应用(程序)上下文和请求上下文
来源:互联网 发布:淘宝c店转让 编辑:程序博客网 时间:2024/06/05 22:51
“狗书”中有个地方讲到应用上下文和请求上下文,博主初次看的时候很懵逼,其实我们要理解这两个东西,最应该了解IT行业的“上下文”是什么意思,这样再去理解应用上下文和请求上下文就容易得多了,只是对博主来说是这样的。
什么是“上下文”
以下内容来自百度百科:
上下文, 英文context,其完整意思应当是concatenate-text,联系文本,在IT行业中译为上下文其实并不确切也不容易理解,尤其是对于初学者,把它翻译为“引用池”或者“引用区”更加恰当。
在java的JSP中的内置对象中的PageContext,事实上,它就是本页面的一个单独的储存区域,里面存放的是各个地方(各个范围)传过来的属性的键值对的总汇。比如说,从Application里面存储了apptime,appname等等属性,在Session中又存了sessionid sessionstate等等属性,在request范围中又存了username,password等属性的键值对,那么PageContext就会把所有能得到的属性全部集中到一个区域里,你可以通过这个小容器,接收和调用到各个范围传递过来的属性,这就是所谓的”上下文“, 你可以把它记为”引用池“!
Flask中的上下文
为了避免大量可有可无的参数把视图函数弄得一团糟,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
这里的request属于请求上下文,请求对象,封装了客户端发出的HTTP请求中的内容,距离说明:假设前端使用ajax带参数 data:{a:b} 请求一个后端接口,我们用Python写的后端接口就可以使用request这个“全局变量”来获取ajax的请求数据,如果接口是post,put类型,则可以使用
data = request.form
获取,如果是get请求,则是可以使用
data=request.args
获取,这里不再详细说明,转接一个博客可以了解flask获取request参数
http://blog.csdn.net/u013055678/article/details/70214756,这里的“全局变量”我们加引号是因为我们只是把他当做全局变量来使用,但实际上并不是真正的全局变量。比如,在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到的request对象是不可能相同的。Flask使用上下文让特定的变量在一个线程中全局可以访问,与此同时却不会干扰其他线程。
在Flask中有两种上下文:应用(程序)上下文和请求上下文。
Flask在分发请求之前激活应用和请求上下午文,请求处理完成后再将其删除。程序上下文被推送后,就可以在线程中使用current_app和g变量。类似的,请求上下文被推送后,就可以使用request和session变量。如果使用这些变量是我们没有激活程序上下文或请求上下文,就会导致错误。
- Flask-应用(程序)上下文和请求上下文
- Flask: 程序和请求上下文
- 应用上下文&请求上下文
- Flask进阶(一)——请求上下文和应用上下文完全解答(上)
- Flask进阶(一)——请求上下文和应用上下文完全解答(下)
- Flask-请求上下文
- Flask源码解读 <2> --- 请求上下文和request对象
- 请求上下文
- Flask 上下文处理器
- flask 上下文全局变量
- Flask的Context(上下文)
- Flask学习笔记---上下文
- 进程上下文和中断上下文(转载)
- 应用上下文
- 配置、error日志和请求上下文
- BeanFactory 和ApplicationContext(Bean工厂和应用上下文)
- BeanFactory 和ApplicationContext(Bean工厂和应用上下文)
- BeanFactory 和ApplicationContext(Bean工厂和应用上下文)
- redistemplate 乐观锁实践
- 初级自定义cell
- 查看预定义宏 以及查看预定义的路径
- IOException
- Ubuntu16.04 安装opencv3.3.1
- Flask-应用(程序)上下文和请求上下文
- 杨大腔调近期作息时间一览
- docker资料
- Spring Boot学习笔记----POI(Excel导入导出)
- 部署spring-boot工程jar包使其在后台运行
- Python实现逻辑回归
- 函数差商的计算方法
- llvm Kaleidoscope tutorial 学习记录(2)
- spring-bean的依赖和继承