如何在Django中的dev和prod的一个设置文件中管理环境变量

时间:2019-03-04 22:07:51

标签: django

我正在尝试将本地和产品设置文件合并为一个。

local.py

...
SECRET_KEY = os.environ['DJANGO_SECRET_KEY']
DEBUG = os.environ['DEBUG']

prod.py

...
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']

因为我不在本地使用AWS env变量,所以我希望编译器不要检查那些env变量,而且还有一种方法可以检查环境是dev还是prod,以便我可以执行以下操作?

settings.py

if env == local:
  DEBUG = True
else:
  DEBUG = False

1 个答案:

答案 0 :(得分:0)

我认为您可以使用os.environ.get('AWS_ACCESS_KEY_ID', <default>)-这样,Python不会抛出KeyError,但是我仍然觉得您应该保留单独的本地设置和生产设置,而只指向本地版本。

这也回答了第二个问题,因为您可以在local.py中设置

DEBUG = True

您将不需要

if env == local:
  DEBUG = True
else:
  DEBUG = False

此外,您可以设置base.py设置,该设置将在prod.py和local.py中重复。如果您愿意,可以看看https://github.com/pydanny/cookiecutter-django-它建立了《 Django的两个瓢虫》一书中建议的项目结构。