Heroku Django, выбирая settings.py

Мне интересно, как вы можете выбрать различные файлы settings.py для разных сред. До сих пор я думал об изменении файла manage.py и добавлении значения конфигурации, такого как stage который будет соответствовать имени файла настроек. Показано ниже:

Локальный узел

heroku config:add STAGE="project.settings.prod"

производство

heroku config:add STAGE="project.settings.prod"

Поэтому вместо базы manage.py:

<pre class="prettyprint linenums">if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.production") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) </pre>

Мы бы хотели иметь:

<pre class="prettyprint linenums">if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", os.environ['stage']) from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) </pre>

Это чувствует себя неестественно, хотя и ищет дополнительную информацию, если есть лучший способ справиться с этой ситуацией. Пример папки настроек показан ниже:

settings/
 __init__.py
 base.py
 local.py
 staging.py
 test.py
 prod.py

Или есть способ добавить параметр --settings в Procfile? В настоящее время мой Procfile:

web: gunicorn project.wsgi
1 ответ

Вместо определения переменной среды stage вы должны непосредственно определить DJANGO_SETTINGS_MODULE среды DJANGO_SETTINGS_MODULE и использовать исходный manage.py без изменений.

licensed under cc by-sa 3.0 with attribution.