我正在使用Python和Django创建一个Heroku Web应用程序,当我执行“git push heroku master”命令时,Heroku会给出以下错误: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'
问题是,当我在本地服务器上测试我的Web应用程序时(即http://127.0.0.1:8000/),这个方法有效,但是当我将这些更改推送到Heroku时,它就无法工作了。我只想隐藏我的SECRET_KEY,按照其他人的建议,如您所见。我已经查看了其他人的建议,但似乎无法解决问题,因此选择了这种方法,因为它易于理解。非常令人沮丧。非常感谢初学者友好的答案/步骤。
SECRET_KEY
包含在os.getenv
的第二个参数中(即可选的默认值),是否安全,如果我将其提交到公共存储库中?如果不安全,我应该只在settings.py
中使用SECRET_KEY = os.getenv('SECRET_KEY')
吗?我想问题的关键是,如果在Web应用程序中包含第一个参数,它是否是唯一真实的SECRET_KEY
,但如果没有包含它并且您在开发机器上,则会使用第二个参数? - xv8os.getenv('SECRET_KEY')
,但是你需要在 所有 的环境中(包括开发机器、任何测试或暂存环境等)设置一个SECRET_KEY
环境变量。虽然在所有地方设置环境变量也是有可能的,但是将一个虚假值作为默认值可能更容易些。我已经添加了关于os.getenv()
文档的链接。 - Chris