Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 大型django项目的项目设计/FS布局_Python_Django - Fatal编程技术网

Python 大型django项目的项目设计/FS布局

Python 大型django项目的项目设计/FS布局,python,django,Python,Django,布置大型django项目的最佳方式是什么?这些教程提供了设置应用程序、模型和视图的简单说明,但关于应用程序和项目应如何分解、典型项目中应用程序之间允许/必要的共享程度(显然这在很大程度上取决于项目)以及应如何/在何处保存常规模板的信息较少 关于为什么某个项目的布局比另一个好,有没有人给出过例子、建议和解释?我对大量单元测试(实际代码库大小的2-5倍)和字符串外部化/模板的结合特别感兴趣。本页很好地解决了我的一些问题: 具体而言: 要定义自定义模板标记或筛选器,必须在应用程序的目录中创建名为tem

布置大型django项目的最佳方式是什么?这些教程提供了设置应用程序、模型和视图的简单说明,但关于应用程序和项目应如何分解、典型项目中应用程序之间允许/必要的共享程度(显然这在很大程度上取决于项目)以及应如何/在何处保存常规模板的信息较少


关于为什么某个项目的布局比另一个好,有没有人给出过例子、建议和解释?我对大量单元测试(实际代码库大小的2-5倍)和字符串外部化/模板的结合特别感兴趣。

本页很好地解决了我的一些问题:

具体而言:

  • 要定义自定义模板标记或筛选器,必须在应用程序的目录中创建名为templatetags的子目录,并且它必须包含名为_init__u;.py的文件,以便将其作为Python模块导入
  • 要定义Django的测试框架会自动注意到的单元测试,请将它们放在名为tests的模块中(可以是名为tests.py的文件或名为tests的目录)。测试框架还将在该模块中找到任何doctest,但这些doctest的首选位置当然是它们设计用于测试的类或函数的docstring
  • 要提供安装应用程序后立即执行的自定义SQL,请在应用程序目录中创建一个名为SQL的子目录;文件名应与要对其进行操作的表的模型的名称相同;例如,如果您有一个名为weblog的应用程序,其中包含一个名为Entry的模型,则应用程序目录中的文件sql/Entry.sql可用于在创建entries表后立即修改或将数据插入entries表 关于tests.py和tests(目录)的说明也适用于模型,这有助于解决一个文件中有多个测试(或模型)的问题


    我仍然希望看到一些应用程序/项目分解的示例/建议,以及运行良好的大型django网站。

    主要指导原则与任何其他大型代码项目类似。应用程序应该解决一个明确定义的单一责任。“应用程序”的名称用词不当;Django应用程序应该更多地被认为是可重用的组件,可以插在一起创建真正的应用程序。每个应用程序的测试都应该包含在该应用程序中。应用程序应该尽可能地相互解耦,但显然会存在依赖关系,因此目标应该是保持依赖关系图尽可能简单和合理

    我更喜欢将一个项目的所有模板保存在一个项目范围的模板目录下,每个应用程序都有一个子目录(在Django中,为每个应用程序使用模板子目录是一个非常强大的约定,因为它避免了应用程序之间的模板名称冲突)。使用单个项目范围的模板目录的原因是,模板、模板继承树和块名称可能是特定于项目的,因此很难提供可插入任何项目的“默认”应用程序模板。已经有一些人尝试为基本站点范围的模板和它们定义的块确定标准命名约定,但我还没有看到一个标准出现(他们在做事情时的方式可能是我们最接近标准的方式)

    关于“字符串外部化”,如果你指的是i18n和l10n,Django对这一点以及放置.po文件的标准位置有很强的支持。请查看。

    它是围绕小型可重用应用程序的理念构建的,这些应用程序可以很容易地组合到一个项目中。他们把这个项目作为一个演示项目


    我正在进行的Django项目(称为Basie,它是0.1之前的版本,所以还没有链接)正试图遵循Pinax模型,到目前为止,它运行得相当好。

    我当前的布局源于我希望有一个网站的测试版本。这意味着每个站点有两个项目,因为它们需要不同的配置,并迫使我将所有应用程序移出项目

    我创建了两个文件夹:$APP_ROOT/devel和$APP_ROOT/prod。它们包含所有的应用程序。使用源代码管理(在我的例子中是git),我将应用程序放在devel中的头部修订版上,而prod中的应用程序锁定在prod标记上。模板也有自己的文件夹,其布局与应用程序相同


    现在我可以在develapps文件夹和matchingtemplate文件夹中进行所有开发。当我有满意的东西时,我会给修订和更新产品贴上标签。

    我发现扎卡里的布局非常有用
    我真的很喜欢这篇关于这个主题的文章。他漏掉了关于如何将设置文件粘合在一起的信息,但我将有一篇文章可以链接,但现在任何人都可以查看我在自述文件中包含了哪些方向。

    在这个答案中,您需要在u init_uuuuuy.py中转义初始下划线,以避免标记引擎将其解释为粗体文本。