Django是一种在
数据科学社区被广泛采用的Python Web应用程序框架。
Django的起源造就了它的开源社区文化。Django最初是由美国
堪萨斯州的一个Web开发团队编写的,诞生于2003年秋天。当时,开发团队需要维护当地的几个新闻站点,于是开发出一种节约时间的Web框架。2005年6月,Django以开源软件的形式被发布。经过这些年的发展,Django已经是一个拥有成千上万用户和贡献者的开源项目。Django的两个创始人Adrian和Jacob仍然在为Django把控方向,但是Django的发展更多依靠社区团队的合作,用于解决Web开发者们在开发中不断遇到的问题。本质上说,Django是一个用
Python编写的类库。要使用Django来开发网站,就需要编写Python代码来使用这些类库。所以,学习Django其实就是学习如何用Python编程以及理解Django的运作方式。
Django适合构建可扩展的Web应用程序,适合构建有多种用户角色的Web应用程序仪表板,用于创建便于沟通联系的社交网络站点,还可以灵活地针对跨平台设备运行应用程序。
框架介绍
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是
OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方
插件,使得Django具有较强的
可扩展性。Django项目源自一个在线新闻Web站点,于2005年以开源的形式被释放出来。Django框架的核心组件有:
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已经成为web开发者的首选框架,是一个遵循MVC设计模式的框架。MVC是Model、
视图、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个
全球音乐电视台的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它们各自的职责如下:
从以上表述可以看出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的设计十分优美:
工作机制
工作机制
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版本主要由以下几部分组成: