布局大型django项目的最佳方法是什么?这些教程提供了有关设置应用程序,模型和视图的简单说明,但是关于应如何细分应用程序和项目的信息较少,在典型项目中应用程序之间允许/必要共享的数量较少(显然这在很大程度上取决于项目)以及应保留一般模板的方式/位置.
有没有人有关于为什么某个项目布局比另一个更好的例子,建议和解释?我特别感兴趣的是结合了大量的单元测试(实际代码库大小的2-5倍)和字符串外化/模板.
主要指南与任何其他大型代码项目类似.应用程序应该解决一个明确定义的责任."申请"这个名称用词不当; Django应用程序应该更多地被视为可重用的组件,可以将它们连接在一起以创建真正的应用程序.每个应用程序的测试应该包含在该应用程序中.应尽可能将应用程序彼此分离,但显然会存在依赖关系,因此目标应该是使依赖关系图尽可能简单明了.
我更喜欢将项目的所有模板保存在单个项目范围的模板目录下,每个应用程序都有一个子目录(使用每个应用程序的模板子目录是Django中非常强大的约定,因为它避免了应用程序之间的模板名称冲突) .单个项目范围模板目录的原因是模板,模板继承树和块名称可能非常特定于项目,因此很难提供可以插入任何项目的"默认"应用程序模板.已经有一些尝试来解决基本站点范围模板和它们定义的块的标准命名约定,但我还没有看到标准出现(他们在Pinax做事的方式可能是我们最接近的标准).
重新"字符串外化",如果你的意思是i18n和l10n,Django强烈支持它放置.po文件的标准位置 - 检查文档.
我发现Zachary的布局非常有用 Zachary Voase的Blog»Django Project Conventions,Revisited.
这个页面很好地解决了我的一些问题:http://www.b-list.org/weblog/2006/sep/10/django-tips-laying-out-application/
特别:
要定义自定义模板标记或过滤器,必须在应用程序目录中创建名为templatetags的子目录,并且必须包含名为__init__.py的文件,以便可以将其作为Python模块导入.
要定义Django测试框架会自动注意的单元测试,请将它们放在一个名为tests的模块中(可以是名为tests.py的文件或名为tests的目录).测试框架还将在该模块中找到任何doctests,但当然,它们的首选位置是它们旨在测试的类或函数的文档字符串.
要提供将在安装应用程序后立即执行的自定义SQL,请在应用程序的目录中创建一个名为sql的子目录; 文件名应与其操作表的模型名称相同; 例如,如果您有一个名为weblog的应用程序,其中包含名为Entry的模型,则应用程序目录中的文件sql/entry.sql可用于在创建条目表后立即修改或插入数据.
关于tests.py和tests(目录)的注释也适用于模型,这有助于解决为一个文件使用多个测试(或模型)的问题.
我仍然希望看到app/project分解的一些示例/建议,以及运行良好的大型django站点.