Django子应用程序和模块结构

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (46)

我正在开发Django应用程序,它是一个大型系统,需要多个子应用程序来保持整洁。因此,我有一个顶级目录,即Django应用程序(因为它有一个空的models.py和多个子目录,这些子目录本身也是应用程序。

我之所以以这种方式放置应用程序,是因为子应用程序是分开的,但是它们永远不会单独使用,在父应用程序之外。因此,将它们分开分发是没有意义的。

在安装我的应用程序时,设置文件必须包括如下内容:

INSTALLED_APPS = (
    ...
    'myapp',
    'myapp.subapp1',
    'myapp.subapp2',
    ...
)

这显然不是最优的.。这也有一个稍微令人讨厌的结果,就是要求所有的子应用程序都由它们的“内部”名称(即subapp1,,,subapp2等等)。例如,如果我想为子app 1重置数据库表,我必须键入:

python manage.py reset subapp1

这很烦人,特别是因为我有一个名为core-当我的应用程序安装在用户的项目中时,它可能与另一个应用程序的名称发生冲突。

我这样做是完全错误的,还是有其他方式强迫这些“内部”应用程序被他们的全名所指?

提问于
用户回答回答于

这样做是正确的,因为Django本身就是这样做的。例如,管理应用程序是在INSTALLED_APPSdjango.contrib.admin,但要重新设置它,必须使用manage.py reset admin事实上,manage.py reset django.contrib.admin不起作用.

不过,不应该关心名称冲突,因为应该始终在virtualenv环境,与python安装的其余部分隔离。这是一个比在普通python安装上运行Django更强大和灵活的解决方案。

扫码关注云+社区