開發Django項目是最常見,也是最麻煩的一個問題就是如何區分開發配置與線上配置。一般這個時候我們會拆分setting.py為多個配置文件,例如:base.py、develop.py...等等,然后統一放在settings文件夾里面。
例如新建一個Django項目的時候,默認結構如下:
test_project
├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
新建一個 settings 的文件夾
里面新建 base.py、develop.py這兩個文件,然后刪除setting.py
test_project ├── manage.py └── test_project ├── __init__.py ├── settings <- add │ ├── __init__.py <- add │ ├── base.py <- add │ ├── develop.py <- add ├── urls.py └── wsgi.py
base.py里面是公用配置,例如:SECRET_KEY、INSTALLED_APPS
develop.py里面是開發環境下的配置,例如:DEBUG=True、開發環境數據庫等。
當我們配置好這些文件之后,運行django會報錯,里面比較重要的是這句:django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must
not
be empty.
這是因為我們把settings.py刪除了,django找不到配置文件。這個時候我們可以在運行python manage.py runserver的時候加上環境配置:python manage.py runserver --settings=test_project.settings.develop
這個時候就能正常運行了。
Django version 3.1.2, using settings 'test_project.settings.develop' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
使用多個配置環境帶來的另一個好處就是,我們還可以根據不同的端口號來使用不同的環境。例如我可以在 8000
端口使用開發環境的配置,在 8001
端口使用模擬生產環境的配置,這樣子帶來的好處是我們在開發的時候可以同時兼顧多個環境下的狀態。