Heroku上的Django settings.py + dj_database_url?

时间:2012-10-07 17:34:52

标签: django heroku

我在Heroku上开始使用Django - 它显示了设置dj_database_url ......

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

我是否应该完全按照上述方式离开?多数民众赞成我所做的 - 我的网站似乎工作得很好......

OR

我是否应该使用DATABASE_URL替换上面的内容 - 这是从heroku配置设置中提取的?

没有在任何地方使用DATABASE_URL - 它似乎正在使用上面设置的heroku工作而没有改变....但是当我用pg:info查看数据库时 - 我得到0个连接...其中让我觉得与postgresql没有任何联系 - 但是它的工作方式呢?

我还不太明白dj_database_url是如何使用Heroku工作的......有人可以对此有所了解吗?

heroku pg:info
=== HEROKU_POSTGRESQL_GOLD_URL (DATABASE_URL)
Plan:        Dev
Status:      available
Connections: 0
PG Version:  9.1.6
Created:     2012-10-07 16:11 UTC
Data Size:   6.6 MB
Tables:      12
Rows:        27/10000 (In compliance)
Fork/Follow: Unavailable

1 个答案:

答案 0 :(得分:8)

原样是正确的。

在Heroku上运行时,有一个环境变量集(DATABASE_URL),其中包含数据库URL(类似postgres://的字符串,但具有较长的自动生成的用户名/密码/数据库名称,以及主持人通常在amazonaws)

在本地运行时,未设置DATABASE_URL,因此使用您的default = '...'数据库URL(允许您在本地运行代码以进行开发,并部署到Heroku,而无需更改任何代码)。

这基于"12factor methodology"(整个文档几乎描述了Heroku的结构)

dj_database_url.config只是从URL解析用户名/密码/ host / db-name,并将其拆分为dictionary format expected by Django - the code相当简单,如果你很好奇< / p>