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:

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)

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

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)

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

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.