Heroku Django选择settings.py

时间:2014-03-01 22:54:45

标签: django heroku

我想知道如何为不同的环境选择不同的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文件夹的示例如下所示:

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

或者有没有办法在Procfile中添加--settings选项?目前我的Procfile是:

web: gunicorn project.wsgi

1 个答案:

答案 0 :(得分:0)

您应该直接定义stage环境变量,而不是定义DJANGO_SETTINGS_MODULE环境变量,而无需修改即可使用原始manage.py