Django简介
开放源代码的大而全的Web应用框架,由Python语言编写...... 采用了MVC的框架模式,即模型M,视图V和控制器C。 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许 可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。
特点:
- 自带有数据库,也可更改数据库功能强大。用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句 ORM(Object-Relational Mapping“对象-关系-映射”),它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通 过简单的配置就可以轻松更换数据库
- 自带有强大的后台功能 。几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容。在网页可视化下操作。
- 网址定义优雅,灵活性强。用正则匹配网址,传递到对应函数,随意定义,如你所想!
- 模板系统,强大,易扩展,设计简易,代码,样式分开设计,更容易管理。
- 缓存系统,与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。
- 国际化,即支持多语言
不过,在认识Django之前,需要对Web前端知识在做了解。本文在此就简略介绍,详细资料可网上自查。
- HTTP协议是基于TCP/IP通信协议传送数据,属于应用层的面向对象的协议。
- 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
- Web服务器根据接收到的请求后,向客户端发送响应信息。
- 主要特点:简单快速,无连接,无状态,支持B/S及C/S模式。
URI与URL
URI是HTTP使用的同一资源标识符,用来传输数据和建立连接。
URL是一种特殊的URI,其中包含用于查找某个资源的足够的信息。
例如:普通URL组成 http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#
- 协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。
- 域名部分:该URL的域名部分为“www.aspxfans.com”。也可以使用IP 地址
- 端口部分:域名和端口之间使用“:”作为分隔符。如果省略,将采用默认80端口
- 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。
- 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,不是URL必须的部分
- .锚部分:从“#”开始,
- 参数部分:从“?”开始,参数是键值对的形式,参数之间用“&”分隔符。
HTTP的请求方法(最常见的是GET和POST):
- GET 请求指定的页面信息,并返回实体主体
- POST 将数据包含在请求体中,向指定资源提交数据进行处理请求(如:提交表单或者上传文件),该请求可能会导致新的资源的建立或已有资源的修改。
- HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
- PUT 从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE 请求服务器删除指定的页面。
- CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS 允许客户端查看服务器的性能。
- TRACE 回显服务器收到的请求,主要用于测试或诊断。
GET 与POST区别:
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连, 如EditPosts.aspx?name=test1&id=123456. POST 方法是把提交的数据放在HTTP包的Body中。
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
- GET方 式 需 要 使 用Request.QueryString 来 取 得 变 量 的 值 , 而POST 方 式 通 过Request.Form来获取变量的值。
- GET方式提交数据,安全性差,而POST方法较为安全不会将敏感数据暴露在外。比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或 者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
HTTP工作原理:
HTTP协议采用请求/响应模式,客户端向服务端发出一个请求报文。请求报文结构为:请求方法,URL,协议版本,请求头部和请求数据。服务器以一个状态作为响应,响应的 内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
HTTP请求响应步骤 :
- 客户端连接到Web服务器
- 发送HTTP请求
- 服务器接受请求并返回HTTP响应
- 释放连接TCP连接
- 客户端浏览器解析HTML内容
HTTP报文结构:
![Django基础_第1张图片](http://img.e-com-net.com/image/info8/69624165d172479582f959ec23f138aa.jpg)
HTTP请求头部
请求头部为请求报文添加了一些附加信息,
由“名/值”对组成,每行一对,名和值之间使用冒号分隔常见请求头如下:
![Django基础_第2张图片](http://img.e-com-net.com/image/info8/768291ba3207439bb68ecffe4da0a8f6.jpg)
响应头部
与请求头部类似,为响应报文添加了一些附加信息
常见响应头部如下:
![Django基础_第3张图片](http://img.e-com-net.com/image/info8/fe1ab2b6a0eb4a6f847a6f0fa0d5d6d0.jpg)
状态行
由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔
状态代码为3位数字,200~299的状态码表示成功,300~399的状态码指资源重定向,400~499的状态码指客户端请求出错,500~599的状态码指服务端出错(HTTP/1.1向协议中引入了信息性状态码,范围为100~199)
这里列举几个常见的:
![Django基础_第4张图片](http://img.e-com-net.com/image/info8/aa0ae012c8a140f68f419c4095274349.jpg)
Django特点
用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句 ORM(Object-Relational Mapping“对象-关系-映射”),它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通 过简单的配置就可以轻松更换数据库
几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容!
用正则匹配网址,传递到对应函数,随意定义,如你所想!
强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。
与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。
完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。
MVC
大部分开发语言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
- m表示model,主要用于对数据库层的封装
- v表示view,用于向用户展示结果
- c表示controller,是核心,用于处理请求、获取数据、返回结果
MVT
Django是一款python的web开发框架 与MVC有所不同,属于MVT框架
- m表示model,负责与数据库交互
- v表示view,是核心,负责接收请求、获取数据、返回结果
- t表示template,负责呈现内容到浏览器
核心模块
urls.py
网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
views.py
处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网 页。
models.py
与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
forms.py
表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
templates 文件夹
views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。
admin.py
后台,可以用很少量的代码就拥有一个强大的后台。
settings.py
Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。