Django(Python Web框架)学习(一): 预备知识
目录
一、什么是Django?
1、Django的定义:
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
2、Django 框架的核心组件有:
- 用于创建模型的对象关系映射;
- 为最终用户设计较好的管理界面;
- URL 设计;
- 设计者友好的模板语言;
- 缓存系统。
3、Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。
它们各自的职责如下:
|
层次 |
职责 |
|
模型(Model),即数据存取层 |
处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。 |
|
模板(Template),即表现层 |
处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 |
|
视图(View),即业务逻辑层 |
存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。 |
4、工作机制
- 用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls .py
- 当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。
- 然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)
- 最后该view函数负责返回一个HttpResponse对象。
5、部署
Django可以运行在Apache,Nginx上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库,已经支持Postgresql,MySql, Sqlite3,Oracle。Google App Engine也支持Django的某些部分,国内支持的平台有(SAE)Sina App Engine,(BAE)百度应用引擎。
二、HTTP协议的认识
1、什么是HTTP 协议?
HTTP协议就是客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。
1)基于 TCP/IP
- HTTP是一个属于应用层的面向对象的协议。
- HTTP协议工作于客户端-服务端架构上。
2)基于请求-响应模式
- 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
- Web服务器根据接收到的请求后,向客户端发送响应信息。
2、为什么说Http 协议是无状态协议?
HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行
保存。
3、怎么解决Http 协议无状态协议?
无状态协议解决办法:
- 通过Cookie
- 通过Session会话保存。
4、Http请求中常见的请求方式
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
- HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
- HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
5、MVC模式和MTV模式
1)MVC 模式
MVC 就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射( ORM ),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求。
2)MTV 模式
MTV模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,在Python的世界中,基本(除了Pylons)都使用了 MVC 的变种 MTV (Model Templates View 模型-模板-视图)。
Django 的MTV分别是值:
- M 代表模型(Model): 负责业务对象和数据库的关系映射( ORM )。
- T 代表模板 (Template):负责如何把页面展示给用户( html )。
- V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示: