python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1487|回复: 0

Django ── 采用MTV模式 BSD协议的Python自由开源Web应用框架

[复制链接]

172

主题

266

帖子

1130

积分

版主

Rank: 7Rank: 7Rank: 7

金钱
671
金币
7
威望
0
贡献
0
发表于 2015-6-26 17:35:51 | 显示全部楼层 |阅读模式
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应用程序。


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。


20110325120343573.jpg

架构设计

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模式程序员大都是在写控制层的程序。现在,这个工作交给了框架,仅需写很少的调用代码,可大大提高工作效率。


2010051817540775.jpg

设计哲学

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,类似于内容管理系统


738b4710b912c8fcfe024858fd039245d78821b5.jpg.png

工作机制

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日
041.61.6.11        2014年09月02日2015年04月01日
031.5        1.5.12        2013年11月06日2014年09月02日
02
1.4 LTS1.4.222013年02月26日2015年10月01日
011.31.3.72012年03月23日2013年02月26日

Django 未来计划开发版
#
版本系列
发行日期
功能发行支持_结束时间
补丁发行版支持_结束时间
备注
01 1.10 2016年08月 2017年04月 2017年12月
021.11 LTS
2017年04月     
2017年12月2020年04月
032.0   
2017年12月   
2018年08月2019年04月
042.1
2018年08月2019年04月2019年12月
052.2 LTS 2019年04月2019年12月2022年04月
063.0
2019年12月2020年08月2021年04月






版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区  |网站地图  

GMT+8, 2020-10-22 22:30 , Processed in 0.055913 second(s), 32 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表