温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Django can't find my environment variable? VIEW_DB_USER not found. Declare it as envvar or define a
credentials django environment-variables connect decoupling

其他 - Django找不到我的环境变量?

发布于 2020-03-31 23:24:15

我正在用django开发一个应用程序,并将其推到Heroku上。

我想在views.py中用SQL查询数据库,所以我用connectmethod 连接到数据库

在部署我的应用程序时,我显然想隐藏我的数据库凭据。

因此,我将它们保存.env在根目录下文件中,并使用该config函数从views.py中调用这些变量。

但是,我遇到了:

找不到VIEW_DB_USER。将其声明为envvar或定义一个默认值。

(错误位于view_db_user = config("VIEW_DB_USER")

这是我的views.py:

import os 
import django_heroku 
from decouple import config
import dj_database_url

view_db_user = config("VIEW_DB_USER")
view_db_password = config("view_db_password")
view_db_host = config("view_db_host")
view_db_database = config("view_db_database")

mydb = pg2.connect(user=VIEW_DB_USER, password=view_db_password,
                                host=view_db_host, database=view_db_database)

这是我的.env文件:

SECRET_KEY = 'credential_1'

VIEW_DB_USER = 'credential_2'
view_db_password = 'credential_3'
view_db_host = 'credential_4'
view_db_database = 'credential_5'

从我的角度来看,问题在于该功能config无法正常运行。但为什么?

请注意,这不适用于本地和heroku。

还要注意,SECRET_KEY包含另一个可以正常工作的数据库的密码,这个密码存储在我的.env文件中。

查看更多

提问者
Tms91
被浏览
86
Tms91 2020-02-01 08:04

解决了:

第一个问题是.env文件中的列通过以下修复,它可以在本地完美运行,而在Heroku上,我仍然遇到相同的错误:

SECRET_KEY = 'credential_1'

VIEW_DB_USER = credential_2
view_db_password = credential_3
view_db_host = credential_4
view_db_database = credential_5

这是因为我忘记在Heroku Config Vars部分中添加环境变量

https://dashboard.heroku.com/apps/my_app_name/settings

请参阅“部署到Heroku”段落中的本教程