Django读作姜戈,第一个D不发音,与电影《被解救的姜戈》的姜戈除了读音一样,没有其他半毛钱关系。Django是一个优秀的Web框架,用Python编写,是非常流行的全栈框架。
Django的诞生基于非常朴素的需求,00年的秋天,两位主创人员AdrianHolovaty和SimonWillison)为了快速开发,抛弃了PHP转而使用Python,来满足新闻网站的快速迭代开发需求,在开发的过程中他们发现很多共性的代码可以提取出来复用,从而减少工作量,提高效率,慢慢的就开发出一个可以填空的Web框架,这个框架被越来越多的人使用,于是在年的夏天,Django源码开放,一度成为非常流程的框架,有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。
Django是完美主义者的开发框架,和Python一样有着自己的设计哲学:
一、总体架构方面:
1、松耦合
Django的基本目标是松耦合和高内聚。除非绝对必要,否则框架的各个层次都不应“相互了解”。例如,模板系统对Web请求一无所知,数据库层对数据显示层一无所知,而视图系统不在乎程序员使用哪个模板系统。
、更少的代码
Djangoapp应使用尽可能少的代码,充分使用Python语言的动态能力,比如自省功能,自省就是让程序自我反省,比如让程序自己告诉我们它是谁,它在哪里,它要做什么,这些可以借助很多Python内置函数来实现:如help(),dir(),type(),id(),hasattr()等。
、快速的迭代开发
Web开发的节奏越来越快,开发也必须越来越高效,Django设计之初就是为了适应快节奏的开发速度。
4、不要做重复劳动
每一个不同的模块都应该位于一个地方,且只有这一个地方,代码不要冗余,要规范化,很多App在Django这里都是可以直接复用的,而且很容易的添加和删除(通过配置INSTALLED_APPS)。
5、显式胜于隐式
这是Python中的核心原则PEP0,这意味着Django不应做太多“魔术”功能“魔术”功能,除非有充分的理由。仅当“魔术”功能创造了其他方式无法实现的巨大便利时,才值得使用,而且它的实现方式也不会使试图学习该功能的开发人员感到困惑。
6、一致性
Django框架应在所有级别保持风格一致,如从底层级的Python代码,到高层的继承及调用,每一个Django的代源码,看起来都非常具有Django的风格,这非常的优雅,易于阅读和理解,降低学习成本。
二、模型(Models)设计方面:
1、显式胜于隐式
字段不应仅基于字段名称承担某些行为。这需要太多的系统知识,并且容易出错。相反,行为应基于关键字参数,并且在某些情况下,应基于字段的类型。
、包含所有相关联的数据项
Models应遵循MartinFowler的ActiveRecord设计模式[