2. Flask 中请求上下文和应用上下文的区别和作用?

1.什么是上下文

 上下文,相当于一个容器,保存了Flask程序运行过程中的一些信息。

Flask中有两种类型的上下文,请求上下文 和 应用上下文

2.请求上下文(request context)

 思考:在视图函数中,如何获取到当前请求的相关数据?比如:请求地址、请求方式、cookies等等信息

在flask中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:requestsession

  • request

封装了HTTP请求的内容,针对的是http请求。

举例:user = request.args.get('user'),获取的是get请求的参数 

  • session

 用来记录请求会话中的信息,针对的是用户信息

举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息。

3.应用上下文(application context) 

它的字面意思是 “应用上下文”, 但它不是一直存在的,它只是request context中的一个对app的代理人,所谓local proxy。

它的作用主要是帮助request获取当前的应用,它是伴request而生,随request而灭的。

应用上下文对象有:current_appg

扫描二维码关注公众号,回复: 5878894 查看本文章
  • current_app

应用程序上下文,用于存储应用程序中的变量,可以通过current_app.name 打印当前app的名称,也可以在current_app中存储一些变量,例如:

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

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

3.连了哪个数据库

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

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

  • g变量

g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据,g 保存的是当前请求的全局变量不同的请求会有不同的全局变量,通过不同的thread id区别

4.两者区别

  • 请求上下文:保存了客户端和服务器交互的数据
  • 应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等

猜你喜欢

转载自blog.csdn.net/carl95271/article/details/89242444