【发布时间】:2017-09-13 12:35:24
【问题描述】:
我已将 Postgres 数据库添加到我的 Heroku 应用程序中,并正在尝试将我的 Django 应用程序连接到它。但是,我的应用总是连接到本地 Postgres 数据库。
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'app_db',
'USER': 'admin',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
我已将 .env 文件中的“DATABASE_URL”设置为 Heroku 应用程序上 Postgres 数据库的 url,但它似乎没有更新数据库。如何强制我的应用连接到 Heroku 数据库而不是本地数据库?
【问题讨论】:
-
你能确认你的代码确实看到
DATABASE_URL环境变量类似于import os; print os.environ['DATABASE_URL']吗?只需将其放在db_from_env变量之前,重新启动服务器并检查输出。 -
它抛出一个 KeyError;似乎它实际上并没有看到它。我认为 dj_database_url.config() 应该读取 .env 文件并在那里获取 DATABASE_URL 值?如果我确实导出'DATABASE_URL'=postgres:blahblah,它似乎确实有效,但我不明白为什么它不能在.env中使用
-
如果你真的想将你的环境变量存储在 .env 文件中,可以考虑使用
https://github.com/theskumar/python-dotenv。 -
dj_database_url.config()不读取文件,而是检查环境变量值
标签: python django postgresql heroku