項目在開發環境和實際的生產環境中,settings.py
配置文件通常是不一樣的,而且按照以往的開發經驗來看,項目開發完成後settings.py
通常存放著一些用戶名與密碼,所以需要對這些隱私配置項進行單獨的配置。
在setting.py
的上級目錄創建一個Python package
文件夾,直接新建文件夾也是ok的,不過要再新建一個__init__.py
的聲明文件。
然後將原始的settings.py
文件移動至settings
文件夾內,修改文件名為base.py
,即基礎設置(可以理解為開發環境和生產環境配置不變的項)。
此時如果直接使用python manage.py runserver
命令會報錯,因為manage.py
裡面定義了settings.py
文件的默認路徑,需要在manage.py
裡修改設置文件的路徑,我這裡是將meetingroom.settings
修改為 settings.base
def main():
# 將meetingroom.settings修改為settings.base
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meetingroom.settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.base')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
此時開啟服務,就會默認調用settings
文件夾下面的base.py
的配置。
在settings
文件夾下新建一個production.py
文件,用於配置生產環境下的配置。
# production.py
from .base import *
# 通常使用nginx映射出去,所以只需要設置settings就行
ALLOWED_HOSTS = ['127.0.0.1']
DEBUG = False
# 更多請按需配置
此時運行python manage.py runserver --setting settings.production
即可以生產環境的配置啟動服務。
在base.py
中,將隱私項配置為None
...
LOCAL_TEST_USERNAME = None
LOCAL_TEST_PASSWORD = None
...
之後在本地配置文件local.py
或其他配置文件中
from .base import *
TEST_USERNAME = 'hsinyan'
TEST_PASSWORD = 'root'
如此配置即可,可以避免測試環境的敏感信息洩露。