flask中的g对象是一个全局对象存在于应用上下文
但是仅仅存在于一次请求之中
即 请求开始flask收到请求到该请求结束返回结果这一段时间,g对象可以畅游flask全局。
demo:
from flask import Flask
from flask.globals import g
app = Flask(__name__)
@app.route('/<username>')
def index(username):
g.username = username
# print_name()
return 'your name is '+username
@app.route('/who')
def index2():
try:
return g.username
except Exception as e:
return str(e)
def print_name():
print(g.username)
if __name__ == "__main__":
app.run(debug=1)
1.发起请求 /<username>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210508111700346.png)
路由返回结果 your name is abc 本次请求结束
2.发起请求/who
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210508111725952.png)
再次发起请求是可以明显看到ctx没有username这个属性,注意,当我们发起/who这个请求时,/<username>已经return 已经有返回结果,这就进一步证明了g只存在于一次请求中。
添加print_name()
在/<username>路由中添加一个该函数,观察控制台成功打印了传入的参数abc,因为该函数在这次请求过程中,此时就可以传入到其他函数中了。包括但不限于模块化中的其他文件中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210508114525943.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MTk4NDM2,size_16,color_FFFFFF,t_70)