flask的g

news/2024/11/22 21:04:17/

什么是g

from flask import g

在flask,g对象是专门用来存储用户数据的,它是global的缩写,g是全局变量,在整个request生命周期内生效。

g对象如何使用

  1. 官方解释
    The application context is created and destroyed as necessary. It never moves between threads and it will not be shared between requests.
    As such it is the perfect place to store database connection information and other things. The internal stack object is called flask.appctx_stack.
    Extensions are free to store additional information on the topmost level, assuming they pick a sufficiently unique name and
    should put their information there, instead of on the flask.g object which is reserved for user code.

  2. 非官方解释
    g 保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别,像数据库配置这样重要的信息挂载在app对象上,一些用户相关的数据,就可以挂载在g对象上,这样就不需要在函数里一层层传递。

  3. 使用案例

    from flask import Flask, request, gapp = Flask(__name__)@app.route('/youhui')
    def youhui():grade = request.args['grade']g.grade = gradereturn get_amount_by_grade()def get_amount_by_grade():grade = g.gradeif grade == 'a':return '100'else:return '80'if __name__ == '__main__':app.run(host='0.0.0.0', port=5500)
    

    g对象的出现,让你在任何位置都能获得用户数据,避免了在函数参数里传递这些数据。

g对象的生命周期

  1. g对象在整个request请求处理期间生效,这表明,g对象是与request是一一对应的。一次request请求,就有一个g对象,在这次请求之前,之后,以及同时间的请求里,他们互不干扰。

  2. 你在g对象里存储的数据,只能在这一次请求里使用,请求处理结束后,这个g对象就销毁了,存储的数据也就不见了。

  3. g对象的生命周期虽然只是一次请求的生命周期,但它是一个应用 上下文对象。

g对象和session的区别(非官方)

  1. session对象是可以跨request的,只要session还未失效,不同的request的请求会获取到同一个session,但是g对象不是,g对象不需要管过期时间,请求一次就g对象就改变了一次,或者重新赋值了一次。

  2. 也就是说session可以在我们的这个网站随意都可以用 而 g只能是这次的请求如果重定向之后就会改变。

在这里插入图片描述


http://www.ppmy.cn/news/454370.html

相关文章

IBM T43 更换80G硬盘

近日想把自己机器的40G硬盘升级到80G. 装上硬盘后,这个IBM T43的机器,竟然提示Hitach80G的硬盘不兼容,晕! 并且我用Ghost Disk To Disk 这样的方式无法引导. 上网查了一下,原来机器自己带的硬盘跟市场上卖的硬盘竟然还有很多差别. 机器自带的硬盘,可以升级Firmware,市场上卖…

(转)Excel 2016 内存或磁盘空间不足无法打开Excel

https://blog.csdn.net/weixin_34268579/article/details/92093181 我的系统是win 10的系统,内存8G,磁盘500G,C盘80G。 按理说不应该出现 “内存或磁盘空间不足无法打开” 这种问题啊。 可是偏偏就出现了。通过我各种办法,各种…

软件设计师-计算机基础复习8-磁盘阵列相关

磁盘阵列 RAID 0 无冗余和无校验的数据分块 最高级别的存储性能 RAID 1 磁盘镜像阵列 磁盘空间利用率为50% RAID 2 采用纠错海明码的磁盘阵列 大数据传输时I/O性能较高,小批数据传输则不利。实际应用少 RAID 3 和 RAID 4 采用奇偶校验码的磁盘阵列 RAID 3 位交…

一篇掌握3种不同vlan之间互联的方式(单臂路由+Vlanif接口)

vlan可以隔离二层广播域,属于不同VLAN的用户之间不能进行二层通信。但是在实际应用中往往要求实现不同vlan之间的通信,那么如何实现vlan间的通信呢? 可以借助三层路由将报文从一个VLAN转发到另外一个VLAN。VLAN路由可以通过二层交换机配合路由…

台式计算机显示器点不亮的原因,电脑点不亮原因及处理方法

我们在使用电脑的时候偶尔会遇到电脑开机时,点不亮的情况,这也是比较常见的电脑故障,那么电脑点不亮原因及处理方法是什么呢?下面就来具体介绍一下。 电脑点不亮原因及处理方法 1、当电脑屏幕点不亮时候,我们首先可以采取释放静电…

计算机开机显示器不亮,电脑开机显示器不亮怎么回事 电脑开机显示器不亮的故障排除方法...

很多朋友使用电脑的时候会遇到 电脑开机 但是 显示器 却不亮的问题。即使重启机器也是无济于事,这个时候会让人觉得很烦恼。其实致使电脑开机显示器却不亮的原因有很多,有可能是显示器本身的原因,也有可能是主机或者硬件的问题,这…

计算机开机显示器无显示桌面,电脑开机后显示器不亮故障排除方法

电脑开机后显示器不亮故障排除方法 很多朋友使用电脑的时候会遇到电脑开机但是显示器却不亮的问题。即使重启机器也是无济于事,这个时候会让人觉得很烦恼。下面给大家介绍电脑开机后显示器不亮故障排除方法,一起来了解一下吧! 电脑开机后显示器不亮故障排…

数据结构与算法之队列

队列 队列概念队列的操作队列概念 队列是一种线性数据结构,它是一种先进先出(FIFO)的数据结构。队列可以看作是一种特殊的线性表,它只允许在队列的一端进行插入操作,并且只允许在队列的另一端进行删除操作。 队列有两个基本操作:入队和出队。入队操作将元素插入到队列的…