Django的请求生命周期
所谓Django
的请求生命周期,直白的来说就是当请求来的时候和请求走的阶段中,Django的执行轨迹。
一个完整的Django
生命周期:用户从客户端发出一条请求以后,首先会基于http
协议去解析数据并封装,然后来到Nginx处理(nginx
监听公网ip
的某个端口,接到请求后,如果是静态资源,nginx
直接获取该资源并返回给用户,如果是动态资源,nginx
就将请求转发到uWSGI
,使用协议一般是uwsgi
),uWSGI
接收到请求以后,通过将http
协议转化为WSGI
协议,和Django
之间进行通信,此时,该条请求就真正的来到了后端之上,首先它会经过Django
的第一道工序:中间件,(而所谓中间件,简单来说就是请求来和请求走的时候Django
增加的一道工序,请求来和请求走的时候都要先经过中间件
的处理,因此,也可以将中间件理解为Django
提供的额外功能组件),在经过中间件以后,来到Django
的第二道工序:路由层(urls.py)去筛选匹配符合符合请求命令后缀的地址,然后根据匹配到的地址去Django
的第三道工序:视图层(views.py)找到对应的视图函数/视图类里的属性,之后去到第四道工序:模型层(models.py)通过orm
操作去数据库中获取数据,拿到数据以后回到视图层(views.py)里对数据进行处理(序列化和反序列化),将处理后的数据返给Django的第五道工序:模板层(Templates),模板层接收到数据后,对数据进行渲染,之后再次经过视图层、路由层、中间件、uWSGI
服务器、Nginx
代理,最后将渲染的数据返还给客户端进行展示。