将 Django 连接到实时 Heroku Postgres 数据库

HLH*_*HLH 2 python django postgresql heroku

我已将 Postgres 数据库添加到我的 Heroku 应用程序中,并尝试将我的 Django 应用程序连接到它。但是,我的应用程序始终连接到本地 Postgres 数据库。

设置.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)
Run Code Online (Sandbox Code Playgroud)

我已将 .env 文件中的“DATABASE_URL”设置为 Heroku 应用程序上 Postgres 数据库的 url,但它似乎没有更新数据库。如何强制我的应用程序连接到 Heroku 数据库而不是本地数据库?

Nif*_*led 5

您可以将设置设置为在开发时从本地数据库读取并在生产中使用 Heroku 数据库。首先,您可能已经知道,您需要dj_database_url.

您可以创建一个名为 的单独设置文件local_settings.py,并在其中包含您的常规数据库配置(例如默认的 Django 数据库配置)。在你的settings.py

DATABASES = {
    'default': dj_database_url.config()
}
Run Code Online (Sandbox Code Playgroud)

在你的底部settings.py

# Tries to import local settings, if on dev, 
# import everything in local_Settings, which overrides the dj_database_url
# If on deploy, local_settings won't be found so just ignore the ImportError
try:
    from .local_settings import *
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

所以你local_settings.py应该在你的开发服务器中,而不是在 Heroku 应用程序中(你可以忽略它,将其添加到 .gitignore)。我希望这是可以理解的。