我使用django startapp api
创建了一个名为API的应用。然后我从settings.py(app
)中的主应用程序(app/settings.py
)加载了这个应用程序:
INSTALLED_APPS = [
...
'api.apps.ApiConfig',
...
]
这很棒!然后,我在api文件夹(api/settings.py
)中创建了一个settings.py文件。我想从这个子模块中加载一个名为rest_framework
的模块(由于可重用性)。因此api/settings.py
文件包含以下内容:
INSTALLED_APPS = [
'rest_framework'
]
但是,当我运行应用程序时,未加载rest_framework
模块。我找到了以下解决方法(对于app/settings.py
):
from api.settings import INSTALLED_APPS as API_APPS
INSTALLED_APPS += API_APPS
我认为这不是在所有子模块的主应用程序中加载INSTALLED_APPS
的最佳方法。是否有更好的方法加载所有子模块INSTALLED_APPS
?
答案 0 :(得分:0)
每个应用程序设置的好地方是AppConfig
类。默认的app config可以有合理的默认值,可以通过子类化默认的app config来自定义它们。大多数Django应用程序没有settings.py
,因此如果添加app/settings.py
,其他Django开发人员看起来就不寻常。
就个人而言,我会避免尝试在您的应用配置(或app / settings.py)中做一些聪明的事情。当您查看项目的设置文件时,不太清楚安装了哪些应用程序,并且可能会引入细微的错误。
Django调试工具栏,一个非常受欢迎的Django应用程序,其核心Django开发人员的贡献很多,{1.6}中的removed automatic setup,因为它有“问题”。