ree*_*dx8 2 python git django heroku
我使用Python和Django创建了一个Heroku Web应用程序,ModuleNotFoundError: No module named 'dlist.secret_settings'在尝试执行此操作时,Heroku在命令“ git push heroku master”后给了我这个错误:
#settings.py
from .secret_settings import *
# from secret_settings.py import * doesn't work for some reason.
Run Code Online (Sandbox Code Playgroud)
这是secret_settings.py(与settings.py在同一文件夹中)包含的内容:
#secret_settings.py
SECRET_KEY = 'string here'
Run Code Online (Sandbox Code Playgroud)
问题是,当我在本地服务器(即http://127.0.0.1:8000/)上测试我的Web应用程序时,此方法有效,但是当我将这些更改推送至Heroku时,此方法不起作用。正如您所看到的,我只想隐藏我的SECRET_KEY。我查看了其他建议,但我似乎无法弄清楚,选择这种方法是因为它可以理解。非常沮丧。初学者友好的答案/步骤,我们将不胜感激。
我猜您已将Git配置为忽略secret_settings.py。这是我想到创建一个单独文件的唯一原因。
Heroku部署由Git驱动。由于secret_settings.py没有被Git跟踪,因此不会被推送到Heroku。您可以将文件添加到存储库中,但这首先会达到没有单独的未跟踪文件的目的。
解决方案是使用环境变量。这在Heroku上得到了很好的支持。
在settings.py文件中,如下设置您的SECRET_KEY用法os.getenv():
import os
SECRET_KEY = os.getenv('SECRET_KEY', 'Optional default value')
Run Code Online (Sandbox Code Playgroud)
这告诉Django SECRET_KEY从名为的环境变量中加载设置SECRET_KEY。如果不存在这样的环境变量,它将退回到可选的默认值。在您的开发机器上,最好使用默认值。
最后,SECRET_KEY在Heroku上设置环境变量。您可以通过heroku config:set SECRET_KEY="YOUR_SECRET_KEY_VALUE"在开发计算机上运行或通过Heroku的基于Web的仪表板来执行此操作。
您的secret_settings.py文件不再需要。
| 归档时间: |
|
| 查看次数: |
1047 次 |
| 最近记录: |