我正在尝试模块化我的 django 设置文件,以便更容易部署和管理我们的多个环境。
我已将其设置为按此顺序加载我的文件...
- settings.py - 所有人通用的设置
- config/country_XX - 特定于该国家/地区的安装设置(XX 可以是美国、加拿大、澳大利亚等)
- config/developer_XX - 特定于特定开发人员的本地开发环境的设置
两个辅助文件都允许更改在以前文件中设置的值
我发现如果 1 使用正常加载 2 和 3
from config.country_XX import *
我在这些文件中所做的更改被保留。
但是,如果 1 加载 2 和 3 使用
__import__()
或者
importlib.import_module()
我所做的更改不会被保留。
我更喜欢使用 import_module 因为它可以让我编写更简洁的代码
import_module('config.country_' + country)
代替
if country = 'AA':
from config.country_AA import *
elif: country == 'BB'
from config.country_BB import *
...
这就是我所拥有的……让我知道你的想法。
设置.py
import os
import sys
from django.utils import importlib
DEVELOPMENT = True
DEBUG = False
USES_24_HOUR_TIME = True
country_config = 'config.country_us'
developer_config = 'config.developer_jack'
try:
#importlib.import_module(country_config)
from config.country_us import *
if DEVELOPMENT:
#importlib.import_module(developer_config)
from config.developer_jack import *
except ImportError:
pass
配置/country_us.py
import sys
globals().update(vars(sys.modules['settings']))
USES_24_HOUR_TIME = False
配置/developer_jack.py
import sys
globals().update(vars(sys.modules['settings']))
DEBUG = True