新的Django 1.4项目结构的用例?

Ada*_*dam 1 django project-structure

我想这是一个后续问题,我应该在django 1.4中创建django应用程序? 最后的答案似乎是"没有人知道为什么Django改变了项目结构" - 这看起来有点令人不满意.

我们正在启动一个新的Django项目,目前我们正在遵循http://www.deploydjango.com/django_project_structure/index.html中概述的基本结构:

??? project
?   ??? apps
?   ?   ??? app1
?   ?   ??? app2
?   ??? libs
?   ?   ??? lib1
?   ?   ??? lib2
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? manage.py
Run Code Online (Sandbox Code Playgroud)

但我认为,我们也正期待一个多开发环境,包括共同项目级组件很大程度上独立于应用程序,因此它似乎吸尘器我分离出的项目和应用程序的路径.

??? project
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? apps
?   ??? app1
?   ??? app2
??? libs
?   ??? lib1
?   ??? lib2
??? manage.py
Run Code Online (Sandbox Code Playgroud)

尽管如此,很难想出任何具体的,非风格的理由.(我之前大部分时间都只使用过单应用程序项目,所以我可能会在这里遗漏一些东西.)

主要是因为Django 1.4似乎正朝着后一个方向发展这一事实.我假设有一些理由或预期的用例可以促成这种变化,但我只看到了它可能是什么的猜测.

问题:

  1. 1.4项目结构变更的动机是什么?
  2. 是否存在使项目内/外的应用程序产生重大影响的用例?

fro*_*g32 6

  1. 从项目中提取应用程序要容易得多,因为没有更多这样的导入:

    from projectname.appname.models import MyModel
    
    Run Code Online (Sandbox Code Playgroud)

    相反,您导入它们的方式与导入通过python包安装的应用程序的方式相同

  2. 如果您使用i18n,那么这可能会产生影响,因为makemessages会在当前目录中搜索翻译字符串.使用单个.po文件翻译应用程序和项目的好方法是在项目目录之外创建语言环境文件夹

    ??? project
    ?   ??? settings.py
    ?   ??? urls.py
    ?   ??? wsgi.py
    ??? app1
    ??? app2
    ??? locale
    ?   ??? en
    ?   ??? de
    ??? manage.py
    
    Run Code Online (Sandbox Code Playgroud)