使用Heroku的Django TypeError

使用Heroku的Django TypeError,django,heroku,django-settings,Django,Heroku,Django Settings,所以我设法在heroku的生产数据库设置之间搞砸了 在本地运行生产设置时收到错误 ImproperlyConfigured at / settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 我在部署到Heroku时遇到以下错误,如图所示: 这似乎与我的数据库设置有关,但我不确定如何解决这个问题 Herok

所以我设法在heroku的生产数据库设置之间搞砸了

在本地运行生产设置时收到错误

ImproperlyConfigured at /
settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
我在部署到Heroku时遇到以下错误,如图所示:

这似乎与我的数据库设置有关,但我不确定如何解决这个问题

Heroku的prod.py数据库设置

urlparse.uses_netloc.append('postgres')
urlparse.uses_netloc.append('mysql')

try:
    if 'DATABASE_URL' in os.environ:
        url = urlparse.urlparse(os.environ['DATABASE_URL'])

        DATABASES = {
            'default':{
                'ENGINE':'django.db.backends.postgresql_psycopg2',
                'NAME': url.path[1:],
                'USER': url.username,
                'PASSWORD': url.password,
                'HOST': url.hostname,
                'PORT': url.port
            }
        }

except Exception:
    print 'Unexpected error:', sys.exc_info()
有没有关于如何解决这个问题的想法?

为什么不使用

这让这变得容易多了:

import dj_database_url

DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
它会自动在
env['DATABASE\u URL']
中查找并解析值,返回到传递到
默认值的值


这是Heroku实际建议您使用的。

您能否在settings.py中提供一个完整的
dj\u database\u url
配置示例?我在谷歌搜索中找不到他们中的任何一个。我的答案就是,事实上正是如此。这就是你所需要的。将dj_database_url安装到virtualenv后,只需将该行粘贴到settings.py中,替换现有的数据库集。谢谢Jack。我使用这一行
DATABASES={'default':dj_database\u url.config(default='mysql://localhost“)}
而且它工作得非常好。但是我应该在哪里指定mysql\u数据库名称、用户名和密码呢?如果我想对生产和开发版本使用不同的数据库设置,该怎么办?这与这个问题无关。但我在我的项目中尝试解决方案时遇到了这些疑问。如果你能帮我的话,那就太好了。这是一个基本的netloc,所以你可以这样指定它mysql://user:pass@localhost/database我对webpartion不太熟悉。没有理由它不“起作用”,但很明显,凭证可能需要不同。我不知道Web派系是否像heroku那样使用环境变量。
import dj_database_url

DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}