Django使用多個setting文件時的配置問題


開發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 端口使用模擬生產環境的配置,這樣子帶來的好處是我們在開發的時候可以同時兼顧多個環境下的狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM