在Django中组织设置

Organizing settings in Django

我正在Django项目中工作,该项目使用在项目根目录中的几个"设置"文件中指定的几十个配置变量:

1
2
3
4
5
6
7
--> myproject
------> app folders
------> ...
--- settings.py
--- settings_global.py
--- settings_production.py
--- settings_development.py

然后,根据某些运行时参数(主机名等),将来自不同设置文件的变量导入到settings.py文件中。这一切工作得相当好,但有时仍然很难找到某个变量,因此我想重新组织设置变量,并将其分为几个类别:

  • 项目特定变量
  • Django特定变量
  • 已安装的应用程序特定变量(如Django_压缩机的设置等)
  • 环境特定变量(生产/开发)

我还想将除settings.py文件以外的所有设置文件移动到settings子目录:

1
2
3
4
5
6
7
8
9
10
11
--> myproject
------> app folders
------> ...
------> settings
---------- __init__.py
---------- common.py
---------- production.py
---------- development.py
---------- apps.py
---------- ...
--- settings.py

我已经创建了settings子目录(以及空的__init__.py文件),并复制/重命名了settings文件。然后我尝试在setting.py文件中导入这些变量,如下所示:

1
2
from settings.common import *
from settings.apps import *

但是,我得到以下错误(即使SETTINGS/common.py文件中存在根目录urlconf):

1
AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF'

我做错什么了?


我认为settings.py模块和settings包之间存在名称冲突,请尝试将该包重命名为其他名称。