应用上下文和请求上下文
from flask import Flask,request,session,url_for,current_app from werkzeug.local import Local,LocalStack #线程隔离技术 #只要绑定在Local对象上的属性 #在每个线程中都是隔离 app = Flask(__name__) # print(current_app.name)#RuntimeError: Working outside of application context. #怎么解决上面的错误 app_context = app.app_context() app_context.push()#把当前app推进取 print(current_app.name)#flask_context_demo #可以用with语句简化 with app.app_context(): print(current_app.name) @app.route('/') def hello_world(): #就是显示当前app的名字 print(current_app.name) print(url_for('my_list')) return 'Hello World!' @app.route('/list/') def my_list(): return 'my list' with app.test_request_context(): #手动推入一个请求上下文到请求上下文栈中 #如果当前应用上下文栈中没有应用上下 #那么会首先推入一个应用上下文到栈中 print(url_for('my_list')) if __name__ == '__main__': app.run()
from flask import g def log_a(): #只要绑定到g对象上的属性,哪里都能用 print('log a %s' % g.username) def log_b(): print('log b %s' % g.username) def log_c(): print('log c %s' % g.username)