繁体   English   中英

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

[英]Git/Heroku - How to hide my SECRET_KEY?

我使用 Python 和 Django 来创建 Heroku Web 应用程序,并且 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,根据其他人的建议。 我看过其他人的建议,我似乎无法弄清楚,选择这种方法是因为它可以理解。 非常令人沮丧。 非常感谢初学者友好的答案/步骤。

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

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

解决方案是使用环境变量 在 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文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM