版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27695659/article/details/88808578
上下文管理:
-
请求上下文(ctx=RequestContext()):request/session
-
App上下文(app_ctx=AppContext()): app/g
-
程序启动:
两个Local: local1 = { } local2 = { }
-
两个LocalStack:
_request_ctx_stack _app_ctx_stack
-
请求到来
-
对数据进行封装:
ctx = RequestContext(request,session) app_ctx = AppContext(app,g)
-
保存数据:
将包含了(app,g)数据的app_ctx对象,利用 _app_ctx_stack(LocalStack())将app_ctx添加到Local中storage = { 1231:{stack:[app_ctx(app,g),]} } 将包含了request,session数据的ctx对象,利用_request_ctx_stack(LocalStack()),将ctx添加到Local中 storage = { 1231:{stack:[ctx(request,session),]} } ```
-
视图函数处理:
from flask import Flask,request,session,current_app,g
app = Flask(__name__)
@app.route('/index')
def index():
# 去请求上下文中获取值 _request_ctx_stack
request.method # 获取值
session['xxx'] # 获取值
# 去app上下文中获取值:_app_ctx_stack
print(current_app)
print(g)
return "Index"
if __name__ == '__main__':
app.run()
app.wsgi_app
- 结束
_app_ctx_stack.pop()
_request_ctx_stack.pop()