Django 是基于python 的 Web 开发框架.
&nsbp;
Web开发指的是开发基于B/S 架构, 通过前后端的配合, 将后台服务器上的数据在浏览器上展现给前台用户的应用.
&nsbp;
在早期, 没有Web框架的时候, 使用 Python CGI 脚本显示数据库中的数据.
Web框架致力于解决一些共同的问题, 为Web 应用提供通用的架构, 让用户专注于网站应用业务逻辑的开发, 而无需处理网络应用底层的协议, 线程, 进程等方面的问题, 从而大大提高开发者的效率和Web应用程序的质量.
一般Web框架的架构是这样的:
大多数基于Python的web框架,如Django、Tornado、Flask、Webpy都是在这个范围内进行增删裁剪。例如Tornado用的是自己的异步非阻塞“WSGI”网关接口,Flask则只提供了最精简和基本的框架,Django则是直接使用了现成的WSGI,并实现了大部分功能,提供了大量的应用工具。
Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
Django本身基于MVC架构,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等优点。
Django诞生于2003年,2006年加入了BSD许可证,成为开源的Web框架。Django这一词语是根据比利时的爵士音乐家Django Reinhardt命名的,含有希望Django能够优雅地演奏(开发)各种乐曲(Web应用)的美好含义,和著名的电影《姜戈的解放》无关。
Django是由美国堪萨斯(Kansas)州Lawrence城中的一个新闻开发小组开发出来的。当时Lawrence Journal-World报纸的程序员Adrian Holovaty和Simon Willison在用 Python 编写Web新闻网站,他们的 World Online小组制作并维护了当地的几个新闻站点。新闻界独有的特点是迭代迅速,从开发到上线,通常只有几天或几个小时的时间。为了能在截止时间前完成工作,Adrian和Simon不得不开发一种通用的高效的网络应用开发框架,也就是Django。
2005年的夏天,当这个框架开发完成时,它已经用来制作了很多个World Online的站点。不久,小组中的Jacob Kaplan-Moss决定把这个框架发布为一个开源软件。短短数年,Django项目就有了数以万计的用户和贡献者,在世界范围内广泛传播。 原来的World Online的两个开发者(Adrian and Jacob)仍然掌握着Django,但是其发展方向受社区团队的影响更大。
在目前基于Python语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC设计模式。
最早由Trygve Teenskaug在1978年提出,上世纪80年代是程序语言Smalltalk的一种内部架构。后来MVC被其他领域借鉴,成为了软件工程中的一种通用架构模式。MVC把Web框架分为三个基础部分:
模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑的部分,Model只提供功能性的接口,通过这些接口可以获取Model的所有功能。白话说,这个模块就是业务逻辑和数据库的交互层,定义了数据表。
视图(View):负责数据的显示和呈现,是对用户的直接输出。
控制器(Controller):负责从用户端收集用户的输入,可以看成提供View的反向功能。
这三个部分互相独立,但又相互联系,使得改进和升级界面及用户交互流程,在Web开发过程任务分配时,不需要重写业务逻辑及数据访问代码。
MVC在Python之外的语言中也有广泛应用,例如VC++的MFC,Java的Structs及Spring、C#的.NET开发框架,都非常有名。
MTV和MVC本质上是一样的。
Django对传统的MVC设计模式进行了修改,将视图分成View模块和Template模块两部分,将动态的逻辑处理与静态的页面展示分离开。而Model采用了ORM技术,将关系型数据库表抽象成面向对象的Python类,将数据库的表操作转换成Python的类操作,避免了编写复杂的SQL语句。
模型(Model):和MVC中的定义一样
模板(Template):将模型数据与HTML页面结合起来的引擎
视图(View):负责实际的业务逻辑实现