我在Heroku的Django应用程序中添加了一个SECRET_KEY配置变量,但现在它不能在本地工作

时间:2016-05-18 14:40:01

标签: python django heroku environment-variables

我将我的密钥更改为我的Heroku应用程序上的环境变量。我改变了它,因为我发现保留settings.py中的密钥是一种安全风险。

但是,现在当我使用python manage.py runserver时,它不会在本地工作。它给出了关于密钥的错误。

如何修复它以便我可以在本地开发我的Heroku应用程序?

3 个答案:

答案 0 :(得分:3)

您可以在本地将密钥导出为环境变量。

export SECRET_KEY=mysecretkey
./manage.py runserver

或者您可以在DEBUG模式下更改settings.py以使用硬编码的密钥。如果您这样做,请确保您在Heroku上运行DEBUG = False

import os

if DEBUG:
    SECRET_KEY = 'mysecretkey'
else:
    SECRET_KEY = os.environ['SECRET_KEY']

答案 1 :(得分:2)

您必须在开发环境中设置环境变量。

<强>窗

转到计算机&gt;属性&gt;高级系统设置。
转到高级标签,底部有一个环境变量... 按钮。

在那里,您可以根据需要编辑变量。

<强>的Linux

修改/etc/environment以包含:

SECRET_KEY = <yoursecretkey>

您应该使用虚拟环境将系统Python安装与不同项目隔离(它解决了冲突的版本要求)并使部署更容易。 Virtualenv Tutorial

要在使用虚拟环境时激活虚拟环境,有一个位于<your_virtualenv>/bin/activate的shell脚本,用于处理更改使虚拟环境工作的所有环境变量。

添加:

SECRET_KEY='<yoursecretkey>'
export SECRET_KEY

activate文件的底部,当它运行时,它将添加(export)环境变量。

答案 2 :(得分:0)

我也有点麻烦,在这里找到我的答案:Set up your local environment variables

如果您在本地使用heroku本地开发,这可能对您有用。我只需要将此行包含在放置在顶级目录中的.env文件中,并使用我的Procfile:

SECRET_KEY = 'yourkey'

在settings.py中:

os.environ.get('SECRET_KEY')

这对我很有用。否则,如果由于某种原因你没有使用本地的heroku,也许你可以尝试在本地工作时从另一个文件中导入你的密钥(并将此文件放在你的gitignore中),然后交换回heroku配置变量进行部署。 / p>