我正在用django开发一个应用程序,并将其推到Heroku上。
我想在views.py中用SQL查询数据库,所以我用connect
method 连接到数据库。
在部署我的应用程序时,我显然想隐藏我的数据库凭据。
因此,我将它们保存.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
文件中。
解决了:
第一个问题是.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部分中添加环境变量
请参阅“部署到Heroku”段落中的本教程