新Django 1.4项目结构的用例?

新Django 1.4项目结构的用例?,django,project-structure,Django,Project Structure,我猜这是最终答案的后续问题,似乎是“没有人知道Django为什么改变了项目结构”——这似乎有点不令人满意 我们正在启动一个新的Django项目,目前我们正在遵循以下所述的基本结构: 但我认为我们也在期待一个多开发者的环境,它包含了大量独立的应用程序和通用的项目级组件,因此我认为将项目和应用程序路径分开似乎更为清晰 ├── project │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── apps │ ├── app1 │ └─

我猜这是最终答案的后续问题,似乎是“没有人知道Django为什么改变了项目结构”——这似乎有点不令人满意

我们正在启动一个新的Django项目,目前我们正在遵循以下所述的基本结构:

但我认为我们也在期待一个多开发者的环境,它包含了大量独立的应用程序和通用的项目级组件,因此我认为将项目和应用程序路径分开似乎更为清晰

├── project
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── apps
│   ├── app1
│   └── app2
├── libs
│   ├── lib1
│   └── lib2
└── manage.py
不过,很难想出任何具体的、非文体的理由来解释这一点。(在此之前,我主要只从事单一应用程序项目,因此我可能会遗漏一些东西。)

我的主要动机是Django1.4似乎正朝着后一个方向发展。我假设有一些基本原理或预期的用例促使了这一变化,但我只看到了关于它可能是什么的猜测

问题:

  • 1.4项目结构变更的动机是什么
  • 是否存在在项目内部/外部使用应用程序会产生重大影响的用例
  • 从项目中提取应用程序要容易得多,因为不再有这样的导入:

    from projectname.appname.models import MyModel
    
    相反,您导入它们的方式与导入通过python包安装的应用程序的方式相同

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

    ├── project
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── app1
    ├── app2
    ├── locale
    │   ├── en
    │   └── de
    └── manage.py
    
  • 从项目中提取应用程序要容易得多,因为不再有这样的导入:

    from projectname.appname.models import MyModel
    
    相反,您导入它们的方式与导入通过python包安装的应用程序的方式相同

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

    ├── project
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── app1
    ├── app2
    ├── locale
    │   ├── en
    │   └── de
    └── manage.py
    

  • 我将之前的回复标记为答案,但我在IRC档案中发现了这篇博文,其中似乎有一些额外的信息

    据我了解,要点是:

    • 在开发时,
      manage.py
      隐式设置
      PYTHONPATH
      以查看项目级代码,其结果是
      import myapp
      适用于项目内部定义的应用程序
    • 部署时,通常不运行
      manage.py
      ,因此必须说
      import myproject.myapp
      ,因此如果不知道这一点,部署时就会出现问题
    • “标准”修复方法是将项目添加到
      PYTHONPATH
      ,但这会导致双重导入(
      myapp
      myproject.myapp
      ),这会在信号等方面产生奇怪的行为

    因此,1.4项目结构似乎主要是为了消除开发人员依赖
    manage.py

    的奇怪效果的可能性,我将早期的响应标记为答案,但我在IRC档案中看到了这篇博文,似乎有一些额外的信息

    据我了解,要点是:

    • 在开发时,
      manage.py
      隐式设置
      PYTHONPATH
      以查看项目级代码,其结果是
      import myapp
      适用于项目内部定义的应用程序
    • 部署时,通常不运行
      manage.py
      ,因此必须说
      import myproject.myapp
      ,因此如果不知道这一点,部署时就会出现问题
    • “标准”修复方法是将项目添加到
      PYTHONPATH
      ,但这会导致双重导入(
      myapp
      myproject.myapp
      ),这会在信号等方面产生奇怪的行为
    因此,1.4项目结构似乎主要是为了消除开发人员依赖
    manage.py
    的奇怪效果的可能性