Django - 采用MTV模式 BSD协议的Python自由开源Web应用框架
Django(发音:[`dʒæŋɡəʊ])是一种用python语言编写的,可快速开发、实用雅洁的自由开源高级web应用框架(open source web framework)。Django可使你专注于编写应用程序,而无需重新编写应用程序所需的每一个车轮。
Django采用MVC软件设计模式,即:模型M、视图V、控制器C;按BSD许可协议发布。但Django更关注模型(Model)、模板(Template)、视图(Views),这就是所谓的MTV模式。
Django的口号是:采用更少代码,简单、快速构建更好的Web应用程序。
智能编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序)
http://dt.digitser.cn/zh-CN/ide/idepy/index.html
Django根据比利时爵士音乐家Django Reinhardt命名,他是一名吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
2005年7月Django以开源BSD许可协议发布。最初是被开发用于管理劳伦斯出版集团旗下的,一个以新闻内容为主的Web站点,即CMS(内容管理系统)软件。
2008年9月发布第一个正式版本Django 1.0。
由于Django近年来发展迅速,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。
01、出奇的快 Django旨在帮助开发者尽可能快的从应用程序概念到开发完成。
02、安全放心 Django十分重视安全性,会帮助开发人员避免许多常见安全问题。
03、极易扩展 最忙的Web站点,也可利用Django的灵活、快速、可扩展能力。
Django框架核心组件,包括: 01、用于创建模型的对象关系映射
02、为最终用户设计的完美管理界面
03、一流的 URL 设计
04、设计者友好的模板语言
05、缓存系统
Django可运行在Apache上,也可运行在支持WSGI、FastCGI的服务器上。Django支持多种数据库,包括 PostgreSQL、MySQL、Sqlite3、Oracle。Google App Engine也支持Django的某些部分,国内支持Django的平台有SAE(Sina App Engine)、BAE 百度应用引擎。
建议使用Python3对应Django最新版本,但也可使用Python2.7对应Django版本。注意:从Django 2.0开始,不再支持Python2.7。
架构设计Django是一个基于MVC构造的web应用框架。
但在Django中,控制器接受用户输入部分是由框架自行处理的;所以,Django更关注模型(Model)、模板(Template)、视图(Views),这就是所谓的MTV模式。
# | 层次 | 功能 | 职责 | 备注 | 01 | 模型(Model)
| 数据存取层 | 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为及数据之间的关系等。
|
| 02 | 模板(Template) | 表现层 | 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
|
| 03 | 视图(View)
| 业务逻辑层 | 存取模型及调取恰当模板的相关逻辑。
| 模型与模板之间的桥梁 |
从上表可以看出,Django视图(View)不处理用户输入,而仅仅决定要展现哪些数据给用户;而Django模板(Template)仅决定如何展现Django视图(View)指定的数据。
或者说, Django将MVC模式中的视图,进一步分解为Django视图(View)和Django模板(Template)两部分,分别决定 “展现哪些数据” 和 “如何展现”;因此,Django模板可根据需要随时替换,而不仅只局限于内置模板。
至于MVC控制器部分,由Django框架URLconf实现。URLconf机制使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意URL风格,不管是传统的,RESTful的,或是另类的。
Django框架把控制层给封装了,无非与数据交互这层,都是数据库表的读、写、删除、更新的操作。在写程序时,只要调用相应方法就行了,感觉十分方便。也就是说,程序员把控制层的东西交给Django自动完成了。 因此,编写很少的代码,就可完成很多的事情。
总之,MTV模式比MVC模式考虑的问题要更深一步,因为,MVC模式程序员大都是在写控制层的程序。现在,这个工作交给了框架,仅需写很少的调用代码,可大大提高工作效率。
设计哲学
Django的主要目的,是简便、快速的开发数据库驱动的Web站点。
Django强调代码复用,多个组件可很方便的以“插件”形式服务于整个框架;Django有许多功能强大的第三方插件,你甚至可很方便的开发出自己的工具包。所以说,Django具有很强的可扩展性。Django还强调快速开发和DRY(Do Not Repeat Yourself)原则。
Django基于MVC的设计,十分优美: 01、对象关系映射 (ORM, object-relational mapping) 以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可在Django中使用原始的SQL语句。
02、URL 分派 使用正则表达式匹配URL,你可设计任意的URL,没有框架的特定限定。
03、模版系统 使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。而且,还具有可继承性。
04、表单处理 你可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从你定义的模型实例,生成相应表单。
05、Cache系统 可以挂在内存缓冲或其它的框架,实现超级缓冲──实现你所需要的粒度。
06、会话(session) 用户登录与权限检查,可快速开发用户会话功能。
07、国际化 内置国际化系统,可方便开发出多语言网站。
08、自动化的管理界面 无需花费事大量工作,去创建人员管理和更新内容。Django自带了一个ADMIN site,类似于内容管理系统。
工作机制
01、用manage .py runserver 启动Django服务器时,就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls .py。
02、当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。
03、然后按顺序逐个匹配URLConf里的URLpatterns。如找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)。
04、最后view函数,负责返回一个HttpResponse对象。
版本历史
01、功能发行版(A·B、A·B+1、等)
大致每八个月发行一次。这些版本包含新功能、现有功能的改进。
02、补丁发行版(A.B.C、等) 根据需要发行,修复bug 和/或安全问题。
这些版本与相关功能发行版100%兼容,除非出于安全原因或为避免数据丢失。因此,“我应升级到最新补丁发行版吗?”的回答,永远是 “Yes”。
某些功能发行版会被指定为长期支持(LTS, long-term support)版本。这些版本将获得一段时间的安全性和应用数据丢失修复保障,通常为三年。
Django 发行版 # | 版本系列 | 最新版本 | 功能发行版支持_结束时间 | 补丁发行版支持_结束时间 | 备注 | 07 | 1.9 | 1.9.5 | 2016年08月 | 2017年04月 | | 06 | 1.8 LTS
| 1.8.12 | 2015年12月
| 2018年04月 | | 05 | 1.7 | 1.7.11 | 2015年04月01日 | 2015年12月01日 | | 04 | 1.6 | 1.6.11 | 2014年09月02日 | 2015年04月01日 | | 03 | 1.5 | 1.5.12 | 2013年11月06日 | 2014年09月02日 | | 02
| 1.4 LTS | 1.4.22 | 2013年02月26日 | 2015年10月01日
| | 01 | 1.3 | 1.3.7 | 2012年03月23日 | 2013年02月26日 | |
Django 未来计划开发版
# | 版本系列 | 发行日期 | 功能发行版支持_结束时间 | 补丁发行版支持_结束时间 | 备注 | 01 | 1.10 | 2016年08月 | 2017年04月 | 2017年12月 | | 02 | 1.11 LTS
| 2017年04月
| 2017年12月 | 2020年04月 | | 03 | 2.0
| 2017年12月
| 2018年08月 | 2019年04月 | | 04 | 2.1
| 2018年08月 | 2019年04月 | 2019年12月 | | 05 | 2.2 LTS | 2019年04月 | 2019年12月 | 2022年04月 | | 06 | 3.0
| 2019年12月 | 2020年08月 | 2021年04月 | |
扫一扫关注 德云社区 微信公众号
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载。
|