Django
Django是什么?简单来说Django就是Python下的一种WEB框架,是一种MTV模型。Python有很多优秀的WEB框架,如Tornado,Flask,Web2py等。
框架(Framework)解决一个开发性问题而设计的具有一定约束的支撑结构,使用框架可以帮你快速开发特定的系统,简单说,就是别人搭建好的舞台你来表演。对于所有的web应用,本质上就是一个socket服务器,用户的游览器就是一个socket客户端
1 | 最简单的web应用就是把HTML用文件保存好,一个现成的HTTP服务器软件,接受用户请求,从文件中读取HTML,返回。 |
在学习Django前我们需要对HTTP协议有个简单的了解。
HTTP
超文本传输协议,规定了游览器和服务器之间通讯规则,规定客户端 请求 服务器 以及 服务端 响应 客户端 的内容格式
客户端 ====请求(request)====>服务端
服务端====响应(response)====>客户端
请求协议
请求协议方法有很多种,比如GET,POST,HEAD,PUT,DELETE,CONNECT等。
其中最常用的方法只有GET/POST这两种方法:
如:http://www.baidu.com/index.html
请求协议格式如下:
请求首行 GET/index HTTP/1.1
请求头信息 为key:vlaue模式,如HOST:localhost
空行 用来和请求分开
请求体 GET没有请求体,POST有请求体
GET和POST区别:
GET:没有请求体,如果有则是在URL后体现出(暴露在URL后面导致不安全),请求体内容限制在1k以内,游览器默认使用GET请求方法
POST方法:有请求体,数据不会出现在地址栏中,请求体内容没有上限。
响应协议
响应格式如下:
响应首行
响应头信息
空行
响应体
响应内容是由服务器发给游览器内容,游览器器会根据响应内容来显示
实例
比如访问www.zhuxyid.com
可以使用chrome游览器的开发者模式查看响应内容。
General 整体信息
Request URL:客户端请求地址
Request Method:请求方法
Status Code:服务放回状态码
Remote Address:服务器IP
Referrer Policy:来源协议
Response Headers 响应头信息 服务端–>游览器
Connection:返回连接状态
Content-Length:返回响应字节长度
Content-Type:返回响应类型以及编码格式
Date:返回响应时间,通常都是GMT时间,并不是UTC时间
Server:返回WEB服务器类型,这里是nginx
X-Cache:这里是我在Nginx上开启缓存来查看命中率的
X-FRAME-Option:这里说明是否允许一个页面可否在
<iframe></iframe>
中标记。Request Headers 请求头信息 游览器–>服务端
Accept:告知服务端接受格式或者类型,q=0.8表示权重比例最高
Accept-Encoding: 告知服务端压缩类型
Accept-Language: 告知服务端接受的语言
Connection: 告知服务端访问后是否立即端口,keepalive表示不立即端口,默认3s
Cookie: Cookie信息,后期详细介绍
Host: 服务端的域名
User-Agent 客户端信息(操作系统,游览器版本,游览器内核等)
简单的web框架实例
实现一个简单的web框架呢
1 | WSGI服务器是python内部服务器,可以用wsgiref模块来来实现 |
1 | from wsgiref.simple_server import make_server |
简单多URL实例
1 | from wsgiref.simple_server import make_server |
简单路由功能实例
1 | from wsgiref.simple_server import make_server |
MVC和MTV
所谓MVC就是分为模块,视图,控制器三层,之间以插件式或者松耦合的方式连接在一起。
M(Model):主要负责业务对象于数据对象(ORM)
V(View):主要负责与用户的交互(page)
C(Controller):负责接收用户输入调用模型和视图完成用户操作
MVC模型 |
---|
Django的模式是MTV,本质上于MVC差别不大,也是各组件保持松耦合关系,只是定义上有些不同。详见官方说明
M(Model):主要负责业务对象与数据库对象(ORM)
T(Template):模板,主要负责如何把页面展示给用户
V(View):视图函数,负责业务逻辑,通过View调用Model和Template
*Django提供一个URL分发器,将URL页面分发给不同View处理,View在调用响应的Model和Template
MTV模型 |
---|
Django安装
直接使用pip install django
来安装
Django常用命令
1 | django-admin startproject mysite #创建mysite项目 |
Django配置文件说明
settings.py 介绍
1 | #cat myweb/myweb/settings.py |
urls.py 介绍
在settings.py定义了
ROOT_URLCONF = 'myweb.urls'
,这个就是django的路由系统它的本质就是URL模块以及为该URL模式调用的函数视图之间的映射表,以这种方式告知django。一个URL对于一段代码
1 | #格式如下 |
项目实例
1 | $django-admin startproject website |