Django
專案中,我們預設的配置是都在 settings.py
檔案裡面的,但是實際本地除錯和線上應該是需要兩個環境的,我們現在來拆分下配置。將配置拆分開來。
一、建立配置目錄
我們在專案的跟路徑下建立一個config
目錄
二、建立基礎配置檔案
在config
配置下 建立 base.py
檔案,然後將原來 settings.py
檔案內容拷貝過來。
三、建立各個環境的配置
注意我是把一些配置提取出來了,如果我們在 環境配置中加了的配置,在 base 中就不需要加了
建立 dev.py
from .base import * # 注意這個必須加,這個是將base 的配置匯入
DEBUG = True
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "ops",
"HOST": "127.0.0.1",
"PORT": 3306,
"USER": "root",
"PASSWORD": "",
},
}
ALIYUN_SECRETID = '123'
建立 prod.py
from .base import * # 注意這個必須加,這個是將base 的配置匯入
DEBUG = False
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "ops",
"HOST": "127.0.0.1",
"PORT": 3306,
"USER": "ops",
"PASSWORD": "",
},
}
ALIYUN_SECRETID = '123'
四、調整settings.py
將settings.py 原有的配置替換成下面的內容。
DJANGO_CONF_MODULE = 'config.{env}'.format(env='dev')
try:
_module = __import__(DJANGO_CONF_MODULE, globals(), locals(), ['*'])
except ImportError as e:
raise ImportError("Could not import config '%s' (Is it on sys.path?): %s"
% (DJANGO_CONF_MODULE, e))
for _setting in dir(_module):
if _setting == _setting.upper():
locals()[_setting] = getattr(_module, _setting)
上面配置是預設使用 dev
的配置。 假設我們要使用prod 的配置,就將 dev
替換成 prod
五、程式使用
from django.conf import settings
settings.ALIYUN_SECRETID # 引用