【问题标题】:Django settings: DATABASE_URL is not workingDjango 设置:DATABASE_URL 不起作用
【发布时间】:2021-06-26 05:01:10
【问题描述】:

我刚刚在 Heroku 中创建了一个测试应用程序,这样我就可以留在同一个 Django 项目中,但可以快速地在连接到我的生产数据库和我的测试应用程序数据库之间来回切换。我使用export:TEST_DATABASE_URL="..." 在我的笔记本电脑上创建了一个环境变量,但即使使用下面的代码,当我在本地主机上运行我的 Django 项目时,我仍然连接到我的生产数据库。有谁知道我如何做到这一点?

# ~~~ PROD SETTINGS ~~~
# DATABASE_URL = os.environ['DATABASE_URL']
# DEBUG = 'False'

# ~~~ TEST SETTINGS ~~~
DATABASE_URL = os.environ['TEST_DATABASE_URL']
DEBUG = 'True'


# tried commenting this code out so it doesn't use the local sqlite file
# DATABASES = { # Use this to use local test DB # todo: prod doesn't havea access to django_session...
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

过程文件:

release: python3 manage.py migrate
web: daphne django_project.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python3 manage.py runworker channels --settings=django_project.settings -v2

【问题讨论】:

  • 您能否提及您的操作系统名称并分享一些有关您如何在其中实际设置环境变量的详细信息?
  • 当然,我在 Windows 上,但我在 Ubuntu 子系统中运行所有 Django 命令(如 python3 manage.py runserver 0:8000)。我有一个DATABASE_URL 环境变量和一个TEST_DATABASE_URL。即使使用上面的代码,当我对端口 8000 使用 runserver 命令时,它仍然显示来自我的生产应用程序的数据。另外,当我在 settings.py 中调试 DATABASE_URL 变量时,可以看到它正在打印测试数据库 url,所以我不确定出了什么问题
  • 我刚刚将我的 Procfile 添加到问题中。我当前的仓库中还有 2 个 git 遥控器,一个用于生产,一个用于测试。但我认为这不会对当地的发展产生影响
  • 仍在为此苦苦挣扎,似乎配置起来应该很容易

标签: django heroku django-settings


【解决方案1】:

我找到了答案。即使我在 settings.py 中设置了DATABASE_URL = os.environ['DATABASE_URL'],Django 也忽略了这一点。在本地运行应用程序时,我必须在我的 ubuntu 终端中使用 export DATABASE_URL={my database credential} 让我的本地主机使用我的测试数据库

【讨论】:

    猜你喜欢
    • 2016-10-10
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2020-09-14
    • 2019-01-15
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多