Django请求生命周期和含rest framework的Django请求生命周期

Django请求生命周期

  • wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask、Django)

  • 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session

  • 路由匹配

  • FBV视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染
    视图函数里面通过django orm获取数据,模板渲染等 生成字符串返回给用户
    如果是CBV的话,走dispatch通过反射找到不同的方法

  • 中间件,对响应的数据进行处理。

  • wsgi,将响应的内容发送给浏览器。

概括为:
前端发送请求–>Django的wsgi–>中间件–>路由系统–>视图–>ORM数据库操作–>模板–>返回数据给用户

包含了rest framework的Django请求生命周期

1,请求到达服务端,经过WSGI和中间件到达路由系统
2,路由系统执行配置的CBV或者FBV中的dispatch方法
3,在dispatch方法中,request方法被封装添加了解析器,认证方法及选择器等方法
4,然后执行initial方法
5,再获取版本,进行认证操作,权限操作和节流操作
6,最后通过反射执行自定义的get,post,push,delete等自定义方法
7,在执行initial方法之前,通过try来捕获可能出现的异常
8,如果出现异常,就执行handle_exception方法来处理捕获到的异常
9,不管是否出现异常,最后的返回值都通过finalize_response方法来处理响应的内容

概括为:
前端发送请求–>Django的wsgi–>中间件–>
路由系统_执行CBV的as_view(),就是执行内部的dispath方法–>
在执行dispath之前,有版本分析 和 渲染器–>在dispath内,对request封装–>
版本–>认证–>权限–>限流–>视图–>
如果视图用到缓存( request.data or request.query_params )就用到了 解析器–>
视图处理数据,用到了序列化(对数据进行序列化或验证) -->视图返回数据可以用到分页

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值