请求上下文和应用上下文

请求上下文:可以简单理解为客户端与服务器之间数据交互请求的容器

请求上下文对象有: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)

最新文章

  1. [转载] COM 套间
  2. URAL 1119. Metro(DP)
  3. 【服务器防护】WEB防护 - WEBSHELL攻击探测【转载】
  4. 5 HBase 常用Shell命令
  5. OSI七层模型学习笔记
  6. 在web项目启动时,使用监听器来执行某个方法
  7. Field的getModifiers()方法返回int类型值表示该字段的修饰符
  8. 5年后,我们为什么要从 Entity Framework 转到 Dapper 工具?
  9. TinkPHP框架学习-04命名空间
  10. MySql:SELECT 语句(六) CONCAT() 函数的使用
  11. ios NSTimer的强引用问题
  12. Linux学习之CentOS(二)--初识linux的一些常用命令
  13. 进度条(progress_bar)
  14. Android开发之漫漫长途 XVII——动画
  15. Js_增删改Cookie的值
  16. 测试webservice的时候,如果出现这个错误:"The test form is only available for requests from the local machine"
  17. python-day15函数递归
  18. SpringIDE的安装
  19. Delphi中使用OLE方法操作Excel
  20. 自己写bootloader(一)

热门文章

  1. explain详解 和 show profiles
  2. 简明Python教程-函数联系笔记
  3. NLP(三) 预处理
  4. 牛客国庆集训派对Day6 A Birthday 费用流
  5. 牛客2018多校第六场 J Heritage of skywalkert - nth_element
  6. 杭电多校 hdu6627 equation
  7. CodeForces 223C Partial Sums 多次前缀和
  8. 51nod 1060 最复杂的数(数论,反素数)
  9. CSS特效集锦:视觉魔法的碰撞与融合(二)
  10. 024 实例5-身体质量指数BMI