1.查看app.run()中run方法
首先进入app.run()方法,进入之后你会发现最核心的一句话, 导入了werkzeug工具包,启动了一个socket,其中self是app有Flask类创建的对象,host是ip地址,port是端口号
2.查看__call__方法
在进入Flask类中的__call__,发现的是里面有一个是wssgi_app方法将执行的结果返回回来,其中参数意思为:
- self是app由flask创建的实例对象
- environ:请求相关的参数也就是前端页面向后端发送请求携带过来的所有参数信息
- start_response: 是请求响应相关的(response)
3.查看wsgi_app源码
3.1总体代码分析
- self:flask创建对象
- environ:是请求相关
- start_response:
3.2ctx代码分析
ctx = self.request_context(environ)
分析,environ是请求相关request
1.进入request_content方法中,会返回一个RequestContext(self, environ)对象,self是app是flask创建的对象,environ是请求相关的数据,
2.进入RequestContext类,在__init__中出现创建了将请求相关的所有数据都赋值给了request,并设置了session
3.总结:ctx = self.request_context(environ)
,ctx是一个RequestContext类对象,返回来这个对象中包含了request,session还有其他的属性
3.3 ctx.push() 把ctx保存起来
1.ctx.push()方法
2.在push中调用了_request_ctx_stack.push(self)
方法,self是ctx,使用该方法需要导入from .globals import _request_ctx_stack
说明:_request_ctx_stack
这个是一个全局变量是LocalStack()的对象