深入浅出Flask:flask使用请求的全局对象g

Posted caimouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入浅出Flask:flask使用请求的全局对象g相关的知识,希望对你有一定的参考价值。

在开发flask程序中,经常会遇到这样的需求,也就是同一个请求下有一些数据是共用的,但是由于代码是放在不同的模块中,要使用相同的数据,要么使用参数来传送,要么使用python的全局对象。使用参数来传送会比较麻烦一些,如果使用python的全局对象,又由于flask是跨不同线程调用,这样会导入一些安全问题,或者自己要做更多的处理。又或者想复用相事的功能代码,也可以放到全局对象,比如搜索功能的表单输入的实现。

比如每一个请求过来,都需要在页面显示这个用户的名称,那么怎么样实现呢?一般来说用户的登录的ID是保存在session里,但用户的名称是保存在数据库里,当连接过来时,就可以根据用户的session找到ID,然后再根据ID找到用户的名称,这样就可以保存起来到请求全局对象里,其它所有使用到的代码,都可以直接使用这个全局对象g,不需要再次根据session里找到ID,再去数据库查找一次。因此这样保存的数据,可以减一次请求内的查询的动作,减少数据库的操作。

不过,要注意这个g对象,它是一次请求中有效,不能跨越不同的请求的。如果有不同的请求,需要使用session来保存,或者其它内存缓存来保存。因为每一个请

以上是关于深入浅出Flask:flask使用请求的全局对象g的主要内容,如果未能解决你的问题,请参考以下文章

Flask 学习-66.全局g对象的使用

flask中的g到底是什么?

flask---第一篇

Flask上下文管理session原理和全局g对象

flask之g对象

Flask_获取请求信息