Django session原始碼剖析
阿新 • • 發佈:2021-06-11
""" 1.django其實有兩個配置檔案 一個是暴露給使用者可以自定義的配置檔案 專案根目錄下的settings.py 一個是專案預設的配置檔案 當用戶不做任何配置的時候自動載入預設配置 2.配置檔案變數名必須是大寫 """ 疑問:為什麼當用戶配置了就使用使用者配置的 不配置就是要預設的 from django.conf import settings settings = LazySettings() os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day05.settings") ENVIRONMENT_VARIABLE= "DJANGO_SETTINGS_MODULE" class LazySettings(LazyObject): def _setup(self, name=None): # os.environ看成是一個全域性大字典 'day05.settings' settings_module = os.environ.get(ENVIRONMENT_VARIABLE) self._wrapped = Settings(settings_module) # Settings('day05.settings') class Settings(object):def __init__(self, settings_module): # 'day05.settings' for setting in dir(global_settings): # 獲取全域性配置檔案裡面所有的變數名 if setting.isupper(): # 校驗是否是純大寫 setattr(self, setting, getattr(global_settings, setting)) # 給Settings物件新增全域性配置檔案中所有的配置資訊 self.SETTINGS_MODULE= settings_module # 'day05.settings' mod = importlib.import_module(self.SETTINGS_MODULE) # from day05 import settings # 匯入暴露給使用者的自定義配置檔案 for setting in dir(mod): if setting.isupper(): setting_value = getattr(mod, setting) setattr(self, setting, setting_value)