32

任何人都可以推荐一篇很好的指南/教程/文章,其中包含有关如何组织和划分大型 Django 项目的提示/指南?

当您需要开始分解初始唯一文件(models.py、urls.py、views.py)并使用几十个实体时,我正在寻找有关如何做的建议。

4

2 回答 2

38

每个“应用程序”都应该很小——一个可重用的实体加上几个关联的表。每个应用程序模型大约有 5 个加/减 2 个表。我们的大多数应用程序都小于 5 个表。一个模型中有零个表。

每个应用程序都应该被设计成一个可重用的概念。在我们的例子中,每个应用程序都是整个站点的一部分;应用程序可以单独删除和替换。

确实,这就是我们的策略。随着我们的需求扩展和成熟,我们可以相互独立地删除和替换应用程序。

可以让应用程序相互依赖。但是,依赖必须限于“模型”和“表单”等明显的东西。此外,应用程序可以依赖于彼此 URL 中的名称。因此,您的命名 URL 必须具有类似“应用程序视图”的形式,以便reverse函数或{% url %}标签可以正确找到它们。

django-admin每个应用程序都应该包含它自己的批处理命令(通常通过脚本可以找到的正式命令。

最后,任何比共享的简单模型或表单更复杂的东西可能不属于任何一个应用程序,但需要是一个单独的共享库。例如,我们使用XLRD,但将它的一部分包装在我们自己的类中,因此它更像是内置csv模块。这个 XLRD 的包装器不是任何应用程序的适当部分,因为它是一个单独的模块,在 Django 应用程序之外。

于 2009-02-09T22:30:57.783 回答
10

我发现查看大型开源 Django 项目并记下该项目的工作方式会很有帮助。Django 的站点有一个很好的开源项目列表:

http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects

谷歌也是如此(尽管其中大多数是较小的插件模板标签和中间件:

http://code.google.com/hosting/search?q=label:django

当然,仅仅因为一个项目以一种方式进行并不意味着这种方式就是正确的方式(或错误的方式)。其中一些项目比其他项目更成功。

最后,真正了解什么有效和无效的唯一方法是自己尝试。除非您自己尝试,否则世界上所有的提示和提示都不会有帮助,但它们可能会帮助您朝着正确的方向开始。

于 2009-02-09T22:39:50.523 回答