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 )就用到了 解析器–>
视图处理数据,用到了序列化(对数据进行序列化或验证) -->视图返回数据可以用到分页

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

相关文章: