我正在使用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/)上测试我的web应用程序时,这是有效的,但当我将这些更改推送到Heroku时,它就不起作用了。正如你所看到的,我想做的就是按照别人的建议隐藏我的SECRET_KEY。我看过其他人的建议,但我似乎无法理解,选择这种方法是因为它是可以理解的。非常令人沮丧。初学者友好的答案/步骤非常感谢。
发布于 2017-12-23 02:21:31
我猜你已经把Git配置成忽略secret_settings.py
了。这是我能想到的创建一个单独文件的唯一原因。
Heroku部署由Git提供支持。因为secret_settings.py
没有被Git跟踪,所以它不会被推送到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
文件。
https://stackoverflow.com/questions/47949022
复制相似问题