Web开发的基本流程
a. 用户向Web服务器请求一个文档;
b. Web服务器随即获取或生成这个文档;
c. 服务器把结果返回给用户的浏览器;
d. 最后浏览器将这个文档渲染出来。
下面我们来实际分析一下具体细节有哪些?
一、通信:HTTP、URL、请求、响应
djangoResponse
- HTTP(超文本传输协议)=请求+响应;
- 请求的核心是URL;
- 响应由正文(body)和响应包头(header)组成。
Django将请求和响应表示成相对简单的Python对象,用属性来表示其数据,以及用方法来进行更复杂的操作。
二、数据存储:SQL和关系数据库
SQL
Web的作用可以理解为传输数据或内容共享(这里的内容可以是任何东西——blog帖子,金融数据,电子书等)。
- 静态内容:同样的URL请求返回的信息总是一样的。
- 大部分动态特性是通过将数据保存在数据库里实现的。
- SQL(结构化查询语言)是用来定义和查询数据库的语言,通常被进一步抽象为一个ORM(对象关系映射),它可以把数据库里的数据映射为面对对象语言里的代码对象。
- SQL数据按照表(table)的形式来组织,每张表则由行(row,例如,条目、对象)和列(column,属性、变量)组成,基本上和数据表格很相似。
Django提供了一个强大的ORM机制,Python的类就代表了表,对象代表了其中的每一行,而对象的属性则代表了列。
三、表示
将模板渲染成HTML和其他格式,使用:
HTML,JavaScript,CSS……
四、组合在一起
上述三者之间靠什么工具来进行交流?
每个Web框架或语言都有不同的方法。这里只讲Django自己的方式。
传统思想为分层(MVC),即:
MVC:Model-View-Controller,模型-视图-控制器
- 模型:控制数据;
- 视图:定义显示的方法;
- 控制器:在两者之间斡旋,并且让用户可以请求和操作数据。
Django的办法:
- 模型部分保持不变,只负责把数据传入数据库。
- Django的视图其实更接近MVC里传统意义上的控制器。它们是将模型层和表示层链接在一起的Python函数。
Django开发团队是这样解释的:
- 我们理解的MVC里,视图的作用是描述将要显示给用户的数据。这不仅仅是数据看上去的外观(look),还包括如何表示数据(present)。视图描述的是你能看哪些数据,而不是怎么看到它。这里面的区别很微妙。
- 换一种说法,Django把表示层一分为二,视图方法定义了要显示模型里的什么数据,而模板则定义了最终信息的显示方法。而框架自己则担当了控制器的角色——它提供了提供了决定什么视图和什么模板一起响应给定请求的机制。
详细的解释
- 模型:应用程序的基本,是最底部的一层,是基础。从整个Web应用的角度来说,模型可能是最容易领会却也是最难掌握的部分。
- 视图:视图组成了Django应用程序里的很多的逻辑。它们的定义实际上却很简单:它们是链接到一个或多个定义URL上的Python函数,这些函数都返回一个HTTP响应对象。
- 模板:当一个视图与要返回一个HTML文档时,它通常会制定一个模板,提供给它所要显示的信息,并在响应里使用模板渲染的结果。