flask

文章详细解析了Flask框架中app.run()的执行流程,包括启动socket、调用__call__方法以及wsgi_app的运作。在__call__中,wsgi_app处理请求与响应。request_context用于封装请求相关数据,并通过push方法存储到全局变量_request_ctx_stack中,确保请求上下文的管理。
摘要由CSDN通过智能技术生成

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()的对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值