我为django项目使用设置模块而不是单个设置文件。这意味着在我的wsgi.py文件中我有这样的东西:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.prod")
要么
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.dev")
取决于我的环境。我真的希望能够在配置文件中设置一个变量,这样我就不必每次进入prod时都进入这个文件并进行更改。
你说的没什么大不了的?好吧,它很容易忘记,然后繁荣我的应用程序是不安全的,因为它在开发设置。我也会在我的应用程序的其他地方使用这个配置变量,所以我有一个" global"将我的应用程序设置为生产或开发设置的标志。
答案 0 :(得分:3)
这种方法怎么样,创建三个设置文件:
在settings.py
文件末尾检查DEBUG=True
是否导入settings_dev.py
其他settings_prod.py
:
settings.py:
----
try:
if DEBUG:
from settings_dev import *
else:
from settings_prod import *
except ImportError:
pass
使用这种方法,您只需要设置:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
现在不要说如果忘记更改特定服务器的DEBUG
值,该怎么办?然后另一个解决方案是有两个单独的存储库在开发存储库的git ignore列表中添加settings_prod.py
,并在git ignore list中添加settings_dev.py
以进行生产。始终在DEBUG=False
和settings_prod.py
DEBUG=True
文件中设置settings.py
,然后在settings.py
文件末尾设置:
try:
from settings_dev import *
except ImportError:
try:
from settings_prod import *
except ImportError:
pass
答案 1 :(得分:0)
您还可以使用环境变量(或机器或用户名)来区分不同的计算机。最好将它设置在debug-one上,而不是在生产中,因此不能忘记。
if "yes" == os.environ.get("DJANGO_DEBUG_ENABLED"):
DEBUG = True
# or
from settings_dev import *
else:
DEBUG = False
# or
from settings_prod import *
或者,您可以在其中放置一个不属于存储库的文件,并检查其存在/不存在,或从DEBUG
导入settings_local.py
。