大django项目的项目devise/ FS布局

什么是最好的方式来布局一个大django项目? 本教程提供了有关设置应用程序,模型和视图的简单说明,但有关应用程序和项目如何细分的信息较less,典型项目中应用程序允许/必须共享多less共享(显然,这主要取决于该项目)以及如何/在哪里通用模板应该保存。

有没有人有例子,build议和解释为什么某个项目布局比另一个更好? 我特别感兴趣的是大量的unit testing(2-5倍实际代码库的大小)和string外部化/模板。

主要的指导方针与其他大型项目相似。 应用程序应该解决一个明确定义的责任。 “申请”这个名字是一个用词不当; Django应用程序应该被认为更多的是可重用的组件,可以被插在一起创build一个真正的应用程序。 每个应用程序的testing应包含在该应用程序中。 应用程序应该尽可能地彼此分离,但显然会有依赖关系,所以目标应该是保持依赖关系图尽可能简单和健全。

我更喜欢将一个项目的所有模板保存在一个项目范围的模板目录下,每个应用程序都有一个子目录(每个应用程序使用模板子目录在Django中是一个非常强大的约定,因为它避免了应用程序之间的模板名称冲突) 。 单个项目范围模板目录的原因是模板,模板inheritance树和块名称可能是特定于项目的,所以很难提供可以插入任何项目的“默认”应用程序模板。 已经有一些尝试去解决基本站点范围的模板和它们定义的块的标准命名约定,但是我还没有看到一个标准的出现(他们在Pinax做的事情可能是最接近我们的标准)。

如果你的意思是i18n和l10n,那么对于“string外部化”,Django对那个放置.po文件的标准位置有强大的支持 – 检查文档 。

我发现Zachary的布局非常有用Zachary Voase的博客»Django项目公约,重温。

这个网页在处理我的一些问题方面做得很好: http : //www.b-list.org/weblog/2006/sep/10/django-tips-laying-out-application/

特别:

  1. 要定义自定义模板标记或filter,您必须在应用程序的目录中创build一个名为templatetags的子目录,并且它必须包含一个名为__init__.py的文件,以便它可以作为Python模块导入。
  2. 要定义Django的testing框架自动发现的unit testing,把它们放在一个名为tests的模块(可以是一个名为tests.py的文件或一个名为tests的目录)中。 testing框架还会在该模块中find任何文档,但是这些文档的首选位置当然是他们devise要testing的类或函数的文档。
  3. 为了提供自定义SQL,在安装应用程序后立即执行,在应用程序目录中创build一个名为sql的子目录; 文件名应该和他们要操作表的模型的名字相同; 例如,如果您有一个名为Weblog的应用程序,其中包含一个名为Entry的模型,则可以使用应用程序目录中的文件sql / entry.sql在创build后立即修改或向其中插入数据。

有关tests.py和tests(目录)的说明也适用于模型,这有助于解决一个文件的许多testing(或模型)的问题。

我仍然希望看到应用程序/项目分解的一些示例/build议,以及运行良好的大型django网站。

Pinax项目是围绕小型可重用应用程序的思想而构build的,这些应用程序很容易集成到一个项目中。 他们已经使用Cloud 27项目作为演示项目。

我正在研究的Django项目(称为Basie,它在0.1之前,所以没有联系)正在试图跟随Pinax模型,到目前为止它的工作还算不错。

我目前的布局源于我想要我的网站的testing版本。 这意味着每个站点都有两个项目,因为他们需要不同的configuration,并迫使我将所有的应用程序移出项目。

我创build了两个文件夹:$ APP_ROOT / devel和$ APP_ROOT / prod。 这些包含所有的应用程序。 使用源代码控制(在我的情况下,git)我有在HEAD版本devel的应用程序,而prod中的应用程序被locking到PROD标记。 模板也有自己的文件夹与应用程序相同的布局。

现在我可以在devel-apps文件夹和匹配的模板文件夹中完成所有的开发工作。 当我有一些我很满意的东西,我标记该修订和更新产品。

我真的很喜欢Randall Degges在这个话题上的post。 他留下了关于如何将设置文件粘贴在一起的信息,但是我将会有一个post,我可以链接,但现在任何人都可以查看我的回购站 ,在自述文件中包含一些方向。