Flask基础(12)-->请求上下文和应用上下文

请求上下文和应用上下文

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

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

猜你喜欢

转载自www.cnblogs.com/888888CN/p/9476992.html
今日推荐