我想知道如何为不同的环境选择不同的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
答案 0 :(得分:0)
您应该直接定义stage
环境变量,而不是定义DJANGO_SETTINGS_MODULE
环境变量,而无需修改即可使用原始manage.py
。