Git / Heroku - 如何隐藏我的SECRET_KEY?

时间:2017-12-23 01:27:18

标签: python django git heroku

我正在使用Python和Django创建一个Heroku网络应用程序,Heroku在命令'git push heroku master'后给我这个错误:ModuleNotFoundError: No module named 'dlist.secret_settings'在尝试执行此操作时:

#settings.py
from .secret_settings import *  
# from secret_settings.py import * doesn't work for some reason.

以下是secret_settings.py(与settings.py位于同一文件夹中)包含的内容:

#secret_settings.py
SECRET_KEY = 'string here'

问题是,当我在本地服务器(即http://127.0.0.1:8000/)上测试我的网络应用程序时,这是有效的,但是当我将这些更改推送到Heroku时,它无法正常工作。我想要做的就是隐藏我的SECRET_KEY,正如你所看到的那样。我看了别人的建议,我似乎无法弄明白,选择这种方法因为它是可以理解的。很沮丧。初学友好的答案/步骤非常感谢。

1 个答案:

答案 0 :(得分:4)

我猜你已经将Git配置为忽略secret_settings.py。这是我能想到创建一个单独文件的唯一原因。

Heroku部署由Git提供支持。由于Git没有跟踪secret_settings.py,因此它不会被推送到Heroku。您可以将该文件添加到您的存储库中,但这样做会破坏首先使用单独的未跟踪文件的目的。

解决方案是使用environment variable。这是well-supported on Heroku

settings.py文件中,使用os.getenv()设置SECRET_KEY,如下所示:

import os

SECRET_KEY = os.getenv('SECRET_KEY', 'Optional default value')

这告诉Django从名为SECRET_KEY的环境变量加载SECRET_KEY设置。如果不存在此类环境变量,则它将回退到可选的默认值。在您的开发机器上,使用默认设置可能没问题。

最后,在Heroku上设置SECRET_KEY环境变量。您可以通过在开发计算机上运行heroku config:set SECRET_KEY="YOUR_SECRET_KEY_VALUE"或通过Heroku的基于Web的仪表板来执行此操作。

不再需要secret_settings.py个文件。