Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django设置:数据库\u URL不工作_Django_Heroku_Django Settings - Fatal编程技术网

Django设置:数据库\u URL不工作

Django设置:数据库\u URL不工作,django,heroku,django-settings,Django,Heroku,Django Settings,我刚刚在Heroku中创建了一个测试应用程序,这样我就可以留在同一个Django项目中,但可以在连接到生产数据库和测试应用程序数据库之间快速切换。我使用导出:TEST_DATABASE_URL=“…”在笔记本电脑上创建了一个环境变量,但即使使用下面的代码,当我在本地主机上运行Django项目时,我仍然连接到生产数据库。有人知道我怎样才能做到这一点吗 # ~~~ PROD SETTINGS ~~~ # DATABASE_URL = os.environ['DATABASE_URL'] # DEBU

我刚刚在Heroku中创建了一个测试应用程序,这样我就可以留在同一个Django项目中,但可以在连接到生产数据库和测试应用程序数据库之间快速切换。我使用导出: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'),
#     }
# }
Procfile:

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

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

您能提到您的操作系统名称并分享一些关于如何实际设置其中的环境变量的详细信息吗?当然,我在Windows上,但我运行Ubuntu子系统中的所有Django命令(如
python3 manage.py runserver 0:8000
)。我有一个
数据库URL
环境变量和一个
测试数据库URL
环境变量。即使有了上面的代码,当我对端口8000使用runserver命令时,它仍然会显示我的生产应用程序中的数据。另外,当我调试settings.py中的
DATABASE\u URL
变量时,可以看到它正在打印测试数据库URL,因此我不确定出了什么问题,我只是将Procfile添加到问题中。我目前的回购协议中还有2个git遥控器,一个用于prod,一个用于测试。但我不认为这会对当地的发展产生影响,仍然在努力解决这个问题,似乎这应该是一件容易配置的事情