[英]Django. Using multiple settings files with Heroku
我試圖遵循“Django的兩個勺子”一書的建議,雖然這是一本非常好的書,但我認為這一部分還不清楚。 所以,我拆分我的設置文件並創建了一個這樣的文件夾:
settings/
__init__.py
base.py (allmost everything there)
local.py (dev. specific settings)
production.py (settings for Heroku)
大多數設置都在base.py文件中
在local.py我有這個:
# settings/local.py
from .base import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
INSTALLED_APPS += ("debug_toolbar", "django_extensions", "south",)
在production.py我有這個:
from .base import *
INSTALLED_APPS += ("gunicorn",)
當我在本地運行時:
python manage.py runserver 7000 --settings=appname.settings.local
python manage.py runserver 7000 --settings=appname.settings.production
一切正常。
但是當我將更改推送到Heroku時,我得到了日志:
File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
所以,我猜Heroku沒有找到我的設置文件,我不知道如何解決這個問題(可能很簡單)。
Django的兩個獨家新聞在這里具有諷刺意味,它寫道“平台即服務 - 參見第25.2節”,然后在該部分中它只寫“讀取平台文檔” :/
使用heroku登錄登錄heroku后,您可以通過運行: heroku config
來檢查您的heroku config
。 如果您沒有看到SECRET_KEY
和DJANGO_SETTINGS_MODULE
,可以通過運行來設置它們:
heroku config:set SECRET_KEY='secret_key_goes_here'
和
heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production
最后,確保在生產設置文件中包含以下語法:
SECRET_KEY = os.environ['SECRET_KEY']
以上說明適用於以下項目結構
-myproject
-app1
-app2
-mysite
-settings
__init__.py
base.py
dev.py
production.py
-manage.py
-Pipfile
-Procfile
-requirements.txt
您可以使用環境變量DJANGO_SETTINGS_MODULE
指定默認設置模塊:
https://docs.djangoproject.com/en/dev/topics/settings/#envvar-DJANGO_SETTINGS_MODULE
在本地Linux機器上:
export DJANGO_SETTINGS_MODULE=settings.local
在Heroku上:
heroku config:set DJANGO_SETTINGS_MODULE=settings.production
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.