查看django setting 源码

form django .conf impirt settings   这个是真正的配置文件的settings

form django.conf import golbal_settings  django全局 配置文件

 为什么 本地的settings 文件里面所有的名字要是大写

第一步先是给 全局的那个大字典赋值   大字典就是 os.environ 然后通过setdefault 取值 

"DJANGO_SETTINGS_MODULE", "book_admin.settings")
取值 但是你的这个大字典里面 没有这个 DJANGO_SETTINGS_MODULE 所以会执行赋值操作 执行完赋值操作,然后在看一下 这个settingas文件 查看django内部的settings内部,首先
settong是一个类的对象点进这个类 然后他会获取 你DJANGO_SETTINGS_MODULE 就等于后面这个book_admin.settings ( 这个是你本地的settings文件) 然后赋值操作,然后
在将你的这个赋值了的变量名传入一个类中,首先 在这个类中 ,首先获取一个文件的文件名,然后dir一下获取到这个文件中所有的变量名首先判断
判断你的这个文件中的所有变量名是不是大写,如果是那么 首先通过setattr 一个赋值的操作 然后 通过getattr操作将你的这个文件名放在第一位当作对象
将循环的变量名放在第二为,取出这个变量名对应的值 然后赋值, 然后 接下来你这个类传进来的这个值settings_module 是你
本地的那个setting 文件 然后给 self一个赋值操作,被你赋过值的 就等于你的setting文件然后importlib 通过这个模块的作用就是
可以通过你的文件名来点出的你文件内所有的变量名获取到你的你变量所对应的值 然后赋值给了一个变量名
这时候你的这个变量名就是你的settings本地的文件 且它可以点语法 获取到你setttings 所有的变量名
然后接下来就是一个for循环 通过dir 获取到你这个变量名文件内部所有的变量名,循环 出来然后判断看你的这个是不是大写如果是那么从新赋值
就会把你django内部的这个本来赋过值的变量名在赋值一遍 顶替掉
原文地址:https://www.cnblogs.com/yangxinpython/p/11545006.html