大型Django项目的项目设计/文件结构布局
如何布局一个大型的Django项目是个好问题。虽然教程里有简单的步骤教你怎么设置应用、模型和视图,但关于如何拆分应用和项目的信息就少了很多。比如,应用之间应该共享多少内容,这通常取决于具体的项目。此外,通用模板应该放在哪里也没有明确的指导。
有没有人能分享一些例子、建议,以及为什么某种项目布局比其他布局更好的原因呢?我特别想了解如何处理大量的单元测试(可能是实际代码量的2到5倍)和字符串外部化/模板的整合。
6 个回答
19
主要的指导原则和其他大型代码项目差不多。应用程序应该只处理一个明确的责任。说“应用程序”这个名字其实不太准确;Django的应用更应该被看作是可以重复使用的组件,这些组件可以组合在一起,形成一个真正的应用程序。每个应用的测试应该放在该应用内部。应用之间尽量要保持独立,但显然会有一些依赖关系,所以我们的目标是尽量让这些依赖关系简单明了。
我更喜欢把一个项目的所有模板放在一个统一的项目模板目录下,每个应用有一个子目录(在Django中,为每个应用使用模板子目录是一个很强的约定,因为这样可以避免不同应用之间模板名称冲突)。之所以选择一个统一的项目模板目录,是因为模板、模板继承树和块名称通常是特定于项目的,所以很难提供可以适用于任何项目的“默认”应用模板。虽然有一些尝试去确定基础站点模板及其定义的块的标准命名约定,但我还没有看到一个真正的标准出现(在Pinax那里的做法可能是我们最接近标准的方式)。
关于“字符串外部化”,如果你指的是国际化(i18n)和本地化(l10n),Django对此有很强的支持,并且有标准的位置来放置.po文件——可以查看文档。