Джанго. Использование нескольких файлов настроек с Heroku
Я стараюсь следовать совету книги "Два совок Джанго", и хотя это действительно хорошая книга, я думаю, что этот раздел неясен.
Итак, я разделил свой файл настроек и создал такую папку:
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",)
in 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 здесь ироничны, он пишет "Platform as Service - см. раздел 25.2", а затем в этом разделе он просто пишет "read Platform Documentation":/
Ответы
Ответ 1
После того, как вы вошли в heroku с помощью heroku, вы можете проверить свои настройки, выполнив:
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
Ответ 2
Вы можете использовать переменную окружения 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