2009-02-09 95 views
31

任何人都可以推荐一本关于如何组织和分割大型Django项目的技巧/指南的优秀指南/教程/文章?组织大型Django项目的指南

我在寻找建议,在需要开始分解初始独特文件(models.py,urls.py,views.py)和使用超过几十个实体时要做什么。

回答

38

每个“应用程序”应该很小 - 一个单独的可重用实体加上几个关联的表。我们每个应用程序模型大约有5个加/减2个表格。我们大部分的6种应用程序都小于5个表格。一个模型中有零表格。

每个应用程序应该被设计成一个可重用的概念。在我们的案例中,每个应用程序都是整个网站的一部分;这些应用程序可以分开移除和替换。

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

让应用程序彼此依赖是可以的。但是,依赖必须局限于“模型”和“形式”这些显而易见的东西。而且,应用程序可以依赖于彼此的URL中的名称。因此,您指定的URL必须具有类似“application-view”的形式,以便reverse函数或{% url %}标签可以正确找到它们。

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

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

10

我发现它有助于看一看在大型的开源Django项目中,并注意到该项目是如何实现的。 Django的网站有开源项目的一个很好的列表:

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

一样谷歌(虽然大部分都是小插件模板标签和中间件:

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

当然,只是因为一个项目做到这一点并不意味着那种方式是正确的(或者错误的方式),其中一些项目比其他项目更成功

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

+0

同意...我从pinax和satchmo上学到的东西是无价的 – Jiaaro 2009-10-20 13:04:27