Python 组织大型Django项目指南

Python 组织大型Django项目指南,python,django,projects,Python,Django,Projects,任何人都可以推荐一本关于如何组织和划分大型Django项目的好指南/教程/文章,其中包含一些技巧/指南 我正在寻找建议,当您需要开始分解初始的唯一文件(models.py、url.py、views.py)并使用几十个实体时,应该怎么做。每个“应用程序”都应该很小——一个可重用的实体加上几个相关联的表。每个应用程序模型大约有5个正负2个表。我们的六个应用程序中的大多数都小于5个表。其中一个模型中没有表 每个应用程序都应该设计成一个可重用的概念。在我们的例子中,每个应用程序都是整个站点的一部分;这些

任何人都可以推荐一本关于如何组织和划分大型Django项目的好指南/教程/文章,其中包含一些技巧/指南

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

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


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

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

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

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


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

我发现查看大型开源Django项目并注意该项目是如何完成的是很有帮助的。Django的网站有一个很好的开源项目列表:

谷歌也是如此(尽管大多数都是较小的外接程序模板标签和中间件:

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


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

同意……我从pinax和satchmo的工作中学到的东西是无价的