由来:为什么我在用django配置的时候导入的不是我项目名下的那个settings
但是我配置了之后依然能够起作用,这是为什么?
from django.conf import settings # 入口 settings = LazySettings() # 单例
from django.conf import global_settings class LazySettings(LazyObject): def _setup(self, name=None): settings_module = os.environ.get(ENVIRONMENT_VARIABLE) # 获取全局的键值对,在manage.py中启动时就已经设置了一个 self._wrapped = Settings(settings_module) class Settings(object): def __init__(self, settings_module): for setting in dir(global_settings): # 先获取系统默认配置里面的所有的变量名 if setting.isupper(): setattr(self, setting, getattr(global_settings, setting)) # 给settings对象设置键值对 self.SETTINGS_MODULE = settings_module mod = importlib.import_module(self.SETTINGS_MODULE) for setting in dir(mod): if setting.isupper(): setting_value = getattr(mod, setting) setattr(self, setting, setting_value) # 给settings对象设置键值对