python框架-Flask请求上下文

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()

在这里插入图片描述

APP请求上下文管理

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_27695659/article/details/88808578
今日推荐