我在settings.py中有敏感数据(数据库密码),我建议将我的Django项目上传到github存储库,然后将其推送到Heroku上的“Heroku上的Django入门”。如果我将settings.py放在.gitignore中,那么可能它不会与我的项目一起部署。如何防止settings.py暴露,但仍然可以使用我的项目部署它?
答案 0 :(得分:3)
您可以使用环境变量(使用heroku config:add SECRET=my-secret
)来设置敏感数据,并在以下设置中检索它们:
SECRET = os.environ.get('SECRET', 'my-default-secret-key')
如果您不希望在未设置某些数据的情况下启动应用,请改用此语法:
SECRET = os.environ['SECRET']
如果未设置SECRET
环境变量,则会引发异常。
答案 1 :(得分:2)
您应该使用专为分解敏感数据而设计的工具。我使用YamJam https://pypi.python.org/pypi/yamjam/。它允许os.environ方法的所有优点,但更简单 - 您仍然需要设置这些环境变量,您需要将它们放在某个地方的脚本/ rc文件中。 YamJam消除了这些问题,并将这些配置设置存储在项目外的配置存储中。这允许您为开发,登台和生产设置不同的设置。
from YamJam import yamjam
secret = yamjam()['myproject']['secret']
是基本用法。和os.environ方法一样,它不是特定于框架的,您可以将它与Django或任何其他应用程序/框架一起使用。我已经尝试了所有这些,多个settings.py文件,if / then的脆弱逻辑和环境争论。最后,我转向yamjam,并没有后悔。