Джанго. Использование нескольких файлов настроек с 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