Django的设计思想2011-01-23 yeeyan 译: kwyjiboDjango设计思路这个文档解释了一些在Django开发人员在开发Django项目中基本的思路。无论是以前还是未来,这些基本的思路将会贯穿Django开发的整个过程。概述松耦合Django的一个基本目标是松耦合,强内聚。在框架中不同层(layer)相互隔离,不应该有所渗透,除非万不得已。比如,模板(template)系统不会包含任何web 请求的对象,数据库层面不会关心数据是如何显示,而视图也不关心数据用模板来呈现的细节。尽管Django提供了一整套从数据库到页面的快速开发框架,但在各个层级都尽可能的保持独立,相互隔离。少写代码Django应用开发应该能尽可能的减少代码量;精简模板。Django应当充分发挥Python语言的动态特性,例如自省。开速开发21世纪web框架最重要的是什么?是能够多快好省得完成繁复的web应用开发。Django应该能使显著提升web开发的速度。不要重复自己(DRY)每一个不同的概念或者一份数据都应该只在一个地方保有一份。冗余是需要避免的。标准化的数据是好的。框架在合理的范围内应当尽可能的细化,以保证更多的可复用性。显示说明比隐含意义好这也是Python的核心原则,他意味着Django不应该有太多晦涩难懂的“魔术代码”。除非有充分的理由可以允许这些不易理解的代码存在。比如,某些“魔术代码”能带来很多的方便而且难以替代,同时这些代码所实现的流程容易为开发者所理解。一致性框架应当在各个层面保持一致性。从低级别的比如Python编码格式的一致性,到高级别的使用Django规则的一致性。模型(对象模型)显示说明比隐含意义好不应该仅仅依赖字段的命名来预示其可能的行为,这样需要你对整个系统十分聊天,而且还容易猜错。相反,操作应该依赖关键的参数,在某些情况下需要依靠字段的类型来表示。模型中应包含相关的各种业务逻辑根据老马(Martin Fowler)的Active Record设计模式,模型应该封装对象的每个方面。所以在模型类中会定义模型数据以及数据相关的描述信息(方便记忆的别名,可选的默认排序字段等)