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

问题描述 投票:1回答:1

我使用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/)上测试我的Web应用程序时,这是有效的,但是当我将这些更改推送到Heroku时,它不起作用。我想要做的就是隐藏我的SECRET_KEY,正如你所看到的那样。我看了别人的建议,我似乎无法弄明白,选择这种方法因为它是可以理解的。很沮丧。初学友好的答案/步骤非常感谢。

python django git heroku
1个回答
4
投票

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

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

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

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

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文件不再需要。

© www.soinside.com 2019 - 2024. All rights reserved.