我正在按照的方法Django的兩個勺子:最佳實踐Django 1.6關於多個設置文件。我使用Django 1.7和virtualenvwrapper。選擇正確的設置文件在Django中使用
我的設置如下:
project/
app1/
app2/
project/
__init__.py
settings/
__init__.py
base.py
local.py
production.py
manage.py
我有點困惑,Django是如何知道哪些設置文件使用。我不想每次運行manage.py時都指定設置文件。我寧願要設置DJANG_SETTINGS_MODULE環境變量作爲omouse雁here解釋說:
什麼混淆我是在wsgi.py文件有一行:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings.production")
這個文件只有在使用生產服務器?如果我已經在服務器上定義了DJANGO_SETTINGS_MODULE環境變量,會發生什麼情況?
當我在本地運行它時,我知道每次打開控制檯時都需要設置DJANGO_SETTINGS_MODULE env變量。我讀過here,我可以在virtualenvwrapper中定義一個postactivate鉤子。然後,該鉤子將創建我每次激活環境時所需的環境變量。
這是確保在本地機器上加載正確的DJANGO_SETTINGS_MODULE env變量的推薦方法嗎?我是否也需要在我的託管服務器上設置一個類似的文件?我打算使用PythonAnywhere進行託管。
最後,如果我運行臨時服務器,我將如何告訴Django加載臨時設置文件?登臺服務器與生產服務器幾乎相同,所以我想爲登臺服務器需要一個不同的wsgi.py文件,但這似乎是一種反模式。
我絕對想要在回購中的所有設置文件。你是否同意在本地設置DJANGO_SETTINGS_MODULE env變量的最佳方法是在virtualenvwrapper中創建一個postactivate鉤子? – Johan 2014-11-01 10:21:10
本地你不需要設置環境變量,因爲默認值應該是你的本地設置。在生產服務器上,我建議使用組合主管+ gunicorn。在啓動應用程序的腳本中設置環境變量,而不必再次設置它。 – Peter 2014-11-01 10:52:09
如果DJANGO_SETTINGS_MODULE env變量未在本地設置,那麼Django如何知道要使用哪個設置文件? – Johan 2014-11-01 10:58:34