3. Django数据流程¶
本章尝试描述信息从浏览器发出后,到浏览器得到反馈后整个数据流程。
3.1. 浏览器后台开发数据流程¶
下面图以访问麦扣网博客为例进行解释:
访问信息主要包括IP+Port等的一份完整的Http协议内容,发送至麦扣网后台,并从后台返回给 用户浏览器的大致流程如下:
- 浏览器/app/客户端 向后台发起请求,此时发送的是标准HTTP协议内容
- 经过服务器程序,此时的符合HTTP请求的内容封装成一个HttpRequest的访问实例, 需要说明的是,HttpRequest并不是由服务器程序直接产生,中间省略了一些内容。
- 发送来的程序经过中间件预处理后,发送给路由模块进行任务匹配
- 经过路由匹配到相应的处理程序,HttpRequest的访问实例最终发送给视图模块中的某一个处理函数属兔或者类视图
- 在视图处理请求的时候,如果有必要需要访问数据库,数据库访问在django中是模型模块
- 5.1 发送请求给模型模块,在实际使用中是直接调用模型类的实例
- 5.2 模型类会访问数据库,这一部分对于普通开发者是不可见的,模型模块把开发者和数据库进行了隔离
- 5.3 数据库会返回相应的查询等结果给模型模块
- 5.4 模型模块会把结果返回给视图,视图直接使用访问结果,不考虑如何和数据库交互
- 视图在处理请求的时候,如果有必要,需要把结果渲染成网页返回,此时可能需要用到模板模块,模板
模块存储管理用户编写的页面模板,如果需要返回,直接调用模板渲染就可以发送给用户,需要注意的是,
如果是前后端分离设计的架构,后台是不需要模板的
- 6.1 视图把模板调用需求发向模板模块,模板模块接收到数据后渲染模板成页面
- 6.2 渲染完毕的页面返回给视图
- 视图把需要返回的结果封装成以HttpResponse实例,并返回,此时需要经过中间件
- 返回结果封装成HttpResponse的实例经过中间件的处理好,最终这个实例发送给客户端之前需要线发送给服务器程序
- HttpResponse实例经过服务器后返回的内容,最后封装成符合HTTP协议的结果,发送给终端/客户端/app/浏览器