0
我想知道如何爲不同的環境選擇不同的settings.py文件。我到目前爲止想到的是更改manage.py
文件並添加一個配置值,如stage
這將對應於設置文件名。如下圖所示:Heroku Django選擇settings.py
本地主機
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)
這雖然感覺unnature,並尋找更多的信息,如果有更好的方式來處理這種情況。設置文件夾的示例如下所示:
settings/
__init__.py
base.py
local.py
staging.py
test.py
prod.py
還是有辦法添加在Procfile的--settings
選項?目前我Procfile是:
web: gunicorn project.wsgi
我在哪裏定義DJANGO_SETTINGS_MODULE環境變量?你可以包含這個例子的代碼嗎? –
在您定義'stage'變量的完全相同的地方。 – lanzz
但不正常的manage.py覆蓋這一行:'os.environ.setdefault(「DJANGO_SETTINGS_MODULE」,「project.settings」)'? –