【问题标题】:Use cases for new Django 1.4 project structure?新 Django 1.4 项目结构的用例?
【发布时间】:2012-08-21 18:16:47
【问题描述】:

我想这是Where should i create django apps in django 1.4? 的后续问题,最后的答案似乎是“没有人知道为什么 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

但我认为我们也期待一个多开发人员环境,其中包含具有通用项目级组件的大部分独立应用程序,因此将项目和应用程序路径分开对我来说似乎更干净。

├── project
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── apps
│   ├── app1
│   └── app2
├── libs
│   ├── lib1
│   └── lib2
└── manage.py

不过,很难为此提出任何具体的、非风格化的理由。 (在此之前我主要只处理单应用项目,所以我可能在这里遗漏了一些东西。)

主要是因为 Django 1.4 似乎正朝着后一个方向发展。我认为有一些理由或预期的用例推动了这种变化,但我只看到了关于它可能是什么的猜测。

问题:

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

【问题讨论】:

    标签: django project-structure


    【解决方案1】:
    1. 从项目中提取应用程序要容易得多,因为不再有这样的导入:

      from projectname.appname.models import MyModel
      

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

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

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

    【讨论】:

      【解决方案2】:

      我将较早的回复标记为答案,但我从 IRC 档案中看到了这篇博文,似乎有一些额外的信息。

      http://blog.tinbrain.net/blog/2012/mar/15/django-vs-pythonpath/

      据我了解,要点是:

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

      所以 1.4 项目结构似乎主要是为了消除开发人员依赖 manage.py 的奇怪效果的可能性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        • 2017-08-01
        • 1970-01-01
        • 2020-11-13
        • 2019-03-18
        • 2015-05-19
        相关资源
        最近更新 更多