1. 程式人生 > 其它 >Django session原始碼剖析

Django session原始碼剖析

"""
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)