DJANGO

Python Web 框架

DJANGO

Django是一种在数据科学社区被广泛采用的Python Web应用程序框架。[0]Django的起源造就了它的开源社区文化。Django最初是由美国堪萨斯州的一个Web开发团队编写的,诞生于2003年秋天。当时,开发团队需要维护当地的几个新闻站点,于是开发出一种节约时间的Web框架。2005年6月,Django以开源软件的形式被发布。经过这些年的发展,Django已经是一个拥有成千上万用户和贡献者的开源项目。Django的两个创始人Adrian和Jacob仍然在为Django把控方向,但是Django的发展更多依靠社区团队的合作,用于解决Web开发者们在开发中不断遇到的问题。本质上说,Django是一个用Python编写的类库。要使用Django来开发网站,就需要编写Python代码来使用这些类库。所以,学习Django其实就是学习如何用Python编程以及理解Django的运作方式。[1]

Django是一种在数据科学社区被广泛采用的Python Web应用程序框架。[1]

Django的起源造就了它的开源社区文化。Django最初是由美国堪萨斯州的一个Web开发团队编写的,诞生于2003年秋天。当时,开发团队需要维护当地的几个新闻站点,于是开发出一种节约时间的Web框架。2005年6月,Django以开源软件的形式被发布。经过这些年的发展,Django已经是一个拥有成千上万用户和贡献者的开源项目。Django的两个创始人Adrian和Jacob仍然在为Django把控方向,但是Django的发展更多依靠社区团队的合作,用于解决Web开发者们在开发中不断遇到的问题。本质上说,Django是一个用Python编写的类库。要使用Django来开发网站,就需要编写Python代码来使用这些类库。所以,学习Django其实就是学习如何用Python编程以及理解Django的运作方式。[2]

Django适合构建可扩展的Web应用程序,适合构建有多种用户角色的Web应用程序仪表板,用于创建便于沟通联系的社交网络站点,还可以灵活地针对跨平台设备运行应用程序。[1]

框架介绍

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django项目源自一个在线新闻Web站点,于2005年以开源的形式被释放出来。Django框架的核心组件有:

用于创建模型的对象关系映射;为最终用户设计较好的管理界面;URL设计;设计者友好的模板语言;缓存系统。

django logo

Django(发音:[`dʒæŋɡəʊ])是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月,并于2008年9月发布了第一个正式版本1.0。

Django根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。

DJANGO
DJANGO

架构设计

Django已经成为web开发者的首选框架,是一个遵循MVC设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它们各自的职责如下:

层次职责模型(Model),即数据存取层处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。模板(Template),即表现层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。视图(View),即业务逻辑层存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

从以上表述可以看出Django视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django模板仅仅决定如何展现Django视图指定的数据。或者说,Django将MVC中的视图进一步分解为Django视图和Django模板两个部分,分别决定“展现哪些数据”和“如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。

至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为我们程序员大都在写控制层的程序。这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。

设计哲学

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

Django基于MVC的设计十分优美:

对象关系映射(ORM,object-relational mapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。URL分派:使用正则表达式匹配URL,你可以设计任意的URL,没有框架的特定限定。像你喜欢的一样灵活。模版系统:使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。表单处理:你可以方便地生成各种表单模型,实现表单的有效性检验。可以方便地从你定义的模型实例生成相应的表单。Cache系统:可以挂在内存缓冲或其它的框架实现超级缓冲--实现你所需要的粒度。会话(session),用户登录与权限检查,快速开发用户会话功能。国际化:内置国际化系统,方便开发出多种语言的网站。自动化的管理界面:不需要你花大量的工作来创建人员管理和更新内容。Django自带一个ADMIN site,类似于内容管理系统。

工作机制

工作机制

1.用manage .py runserver启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls.py。

2.当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。

3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)。

4.最后该view函数负责返回一个HttpResponse对象。

部署

Django可以运行在Apache,Nginx上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库,已经支持Postgresql,MySql,Sqlite3,Oracle。Google App Engine也支持Django的某些部分,国内支持的平台有(SAE)Sina App Engine,(BAE)百度应用引擎。

文档

Django1.0建立了强大完整的文档体系,,涵盖了Django的方方面面,并且适合各种水平的读者和开发者.其中还包含若干个简单的示例,你可以跟随他们一步步体验Django的优美。

Django版本主要由以下几部分组成:

First steps,提供一个快速起步的教程,可以很快开始使用DjangoThe model layer,介绍Django的抽象模型层The view layer,介绍Django的视图层The template layer,介绍Django的模板层Forms,介绍Django提供的一系列用于帮助使用表单的工具The development process,介绍Django提供的一系列用于开发和测试的工具The admin,介绍Django提供的用于站点、内容管理的工具Security,介绍Django提供的用于站点安全控制的工具Internationalization and localization,介绍Django提供的用于全球化和本地化的工具Performance and optimization,介绍Django提供的用于性能和优化的方面的工具以及建议Python compatibility,介绍Django在不同Python环境下的兼容性(Jython和Python 3)Geographic framework,介绍Django提供的地理位置相关的工具Common web application tools,介绍Django提供的一些常用的Web应用程序工具(比如RSS等)Other core functionalities,介绍Django提供的其它重要工具(比如跳转、路由等等)The django open source project,介绍Django作为开源项目的一些内容,比如设计哲学,如何参与开发等等。

参考资料 2

  1. Python Web应用程序框架Django的九种常见用途 — 51cto.com
  2. 第一章:介绍Django — The Django Book
广告位:底部(ad-bottom)—— 请到中台「公共区块」编辑此内容