我想为每种环境(本地与暂存)进行特定设置。我在heroku临时应用程序中设置了Config Vars,并将DEBUG设置设置为false来进行尝试,但是没有用。我错过了什么还是做错了吗?
答案 0 :(得分:1)
您应该在当前settings.py
文件所在的目录中创建一个目录,并将其命名为settings
。然后在此目录中创建base.py
,dev.py
和prod.py
文件。
还要在与这3个设置文件相同的位置创建__init__.py
,并在其中放置__init__.py
的{{1}}中。在from your_project_name.settings.base import *
中,您将拥有prod和dev之间的所有共享设置,而在base.py
和prod.py
中,您将dev.py
从基础“继承”设置。 py文件。这是唯一建议以这种方式导入的情况。
然后,您可以在生产环境中将from .base import *
环境变量设置为使用DJANGO_SETTINGS_MODULE
而不是默认设置变量。
答案 1 :(得分:0)
DEBUG
需要通过环境变量(如果有)进行设置。
因此,将DEBUG = True
更改为DEBUG = os.environ.get('DEBUG', True)
,就可以了。通常将其称为功能标记(模式)。
响应:
如果使用的是“两个瓢”模式,则@ wjh18在正确的路径上。
我概述的模式已经使用多年。
您能看到python终端通过heroku run bash --app APPNAME
,然后依次是python
,import os
和os.environ.get('DEBUG')
在Heroku上抓取了什么。应当与您在Heroku上的设置匹配。如果是这样,则堆栈中可能有某些东西阻止设置(延迟加载)正常工作。
如果您偏离已建立的模式,Django中存在许多陷阱。
以防万一,env var仅适用于Django设置页面,否则通过正确导入设置(DEBUG
)访问Django from django.conf import settings
。