Flask基础(12)-->请求上下文和应用上下文
2024-08-28 23:23:11
请求上下文和应用上下文
请求上下文:可以简单理解为客户端与服务器之间数据交互请求的容器
请求上下文对象有:request、Session
request:封装了HTTP请求的内容,针对的是http的请求
Session:用来记录请求回话中的信息,针对的是用户的信息
应用上下文:应用于存储应用程序中的变量,它的作用主要是帮助request获取当前的应用,它
是伴随request而生,随request而死
应用上下文对象有:current_app、g
current_app存储的变量:
- 应用程序启动的脚本是哪个文件,启动时指定了哪些参数
- 加载了哪些配置文件,导入了哪些配置
- 连接了那个数据库
- 有哪些public的工具类、常量
- 应用跑在哪个机器上,ip是多少,内存是多大
g变量:
g作为Flask程序全局的一个临时变量,充当中间媒介的作用,我们可以通过他传递一些数据,
g保存的是当前请求的全局变量,不同的请求会有不同的全局变量,可以通过不同的thread id区别
请求上下文和应用上下文的区别
请求上下文:保存了客户端和服务器交互的数据
应用上下文:Flask应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等。
注意:上下文中的对象只能在指定的上下文中使用,超出范围不能使用。
请求上下文和应用上下文原理和实现(有兴趣研究的可以参考一下):
https://segmentfault.com/a/1190000004223296
下面用代码演示一下请求上下文和应用上下文的用法
请求上下文:
from flask import Flask
from flask import request app = Flask(__name__) # print(request.method) # 不存在请求范围之内(也就是说request在视图函数中才有效),所以会报错
# print(session.get("user_id","")) # 同样也会报错,错误类型当然也是超出请求范围 @app.route('/')
def demo1():
print(request.method) # 当浏览器请求demo1时,打印出客户端的请求方式
return 'demo1' if __name__ == '__main__':
app.run(debug = True)
应用上下文:
from flask import Flask
from flask import current_app app = Flask(__name__) # print(current_app.config.get("DEBUG")) #报错,超出应用上下文的范围 @app.route('/')
def demo1():
print(current_app.config.get("DEBUG")) # 打印当前应用程序DEBUG的状态
return 'demo1' if __name__ == '__main__':
app.run(debug = True)
最新文章
- [转载] COM 套间
- URAL 1119. Metro(DP)
- 【服务器防护】WEB防护 - WEBSHELL攻击探测【转载】
- 5 HBase 常用Shell命令
- OSI七层模型学习笔记
- 在web项目启动时,使用监听器来执行某个方法
- Field的getModifiers()方法返回int类型值表示该字段的修饰符
- 5年后,我们为什么要从 Entity Framework 转到 Dapper 工具?
- TinkPHP框架学习-04命名空间
- MySql:SELECT 语句(六) CONCAT() 函数的使用
- ios NSTimer的强引用问题
- Linux学习之CentOS(二)--初识linux的一些常用命令
- 进度条(progress_bar)
- Android开发之漫漫长途 XVII——动画
- Js_增删改Cookie的值
- 测试webservice的时候,如果出现这个错误:";The test form is only available for requests from the local machine";
- python-day15函数递归
- SpringIDE的安装
- Delphi中使用OLE方法操作Excel
- 自己写bootloader(一)