我们在flask一个请求内,也许是是一个具体视图函数内的请求,g变量是有效的,那么你设置一般变量也是可以的啊,为啥要专门设置一个全局变量呢,其实我们在这个视图函数内使用其他函数的时候,其他函数如果是有参数的话,需要我们传递进去的,但是使用了全局变量g的话,相当于
global var
在这次请求了注册了一个全局变量,那么他的作用域,使用期限都仅限于此次的请求,在这个请求内所有调用的函数都可以使用此全局变量,请求结束,g变量即销毁,最后我理解是为啥要这么搞? 下面上一个我的例子,不是百度copy的。
#!/usr/bin/python3 #coding:utf-8 from flask import Flask,g app = Flask(__name__) app.config['SECRET_KEY'] = 'merci' ctx = app.app_context() ctx.push() def test(): name = 'sulao' g.user = name test_g() test2_g() print(name, g.user) def test_g(): print("Global var g is %s" % g.user) def test2_g(): print("Test var g is %s again" % g.user) if __name__ == "__main__": test()
上面例子打印结果是
注意了,全局变量g也是一种上下文请求,所以我们需要激活上下文,app_context()激活以后,我们需要推入栈中使用push()方法。flask内大部分的上下文都需要先激活才可以进行使用,具体哪些还得后期整理。