任何人都可以推荐一个很好的指南/教程/文章,其中包含如何组织和分区大型Django项目的提示/指南?
当你需要开始分解初始的唯一文件(models.py,urls.py,views.py)并与几十个实体合作时,我正在寻找建议.
每个"应用程序"应该很小 - 一个可重用的实体加上一些相关的表.每个应用程序模型我们有大约5加/减2个表.我们的六个应用程序中的大多数都小于5个表.一个模型中有零表.
每个应用程序应设计为一个可重用的概念.在我们的例子中,每个应用程序都是整个站点的一部分; 应用程序可以单独删除和替换.
的确,这是我们的战略.随着我们的要求不断扩展和成熟,我们可以相互独立地删除和替换应用程序.
应用程序相互依赖是可以的.但是,依赖性必须限于"模型"和"形式"等显而易见的事物.此外,应用程序可以依赖于彼此URL中的名称.因此,您的命名URL必须具有"应用程序视图"之类的形式,以便reverse
函数或{% url %}
标记可以正确找到它们.
每个应用程序都应包含它自己的批处理命令(通常通过django-admin
脚本可以找到的正式命令).
最后,任何比共享的简单模型或表单更复杂的东西可能不属于任何一个应用程序,但需要是一个单独的共享库.例如,我们使用XLRD,但将它的一部分包装在我们自己的类中,因此它更像是内置csv
模块.XLRD的这个包装器不是任何一个应用程序的适当部分,它是Django应用程序之外的一个单独的模块.
我发现查看大型开源Django项目并注意该项目是如何实现的有所帮助.Django的网站有很多开源项目:
http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects
和Google一样(尽管其中大多数都是较小的附加模板标签和中间件:
http://code.google.com/hosting/search?q=label:django
当然,仅仅因为一个项目以一种方式做到并不意味着这种方式是正确的方式(或错误的方式).其中一些项目比其他项目更成功.
最后,真正了解哪些有效且无效的唯一方法就是自己尝试一下.除非您亲自尝试,否则世界上的所有提示和提示都无济于事,但它们可能会帮助您开始朝着正确的方向前进.