2012-10-07 45 views
3

林繼入門的Django在Heroku上 - 它顯示了將dj_database_url ...Heroku上的Django settings.py + dj_database_url?

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

我應該離開這個如上到底是什麼?這就是我所做的 - 和我的網站似乎工作就好了... ...

OR

我應該換出在上面的東西與DATABASE_URL - 這會從Heroku的配置設置窗口拉?

隨着沒有使用DATABASE_URL任何地方 - 它似乎是在與上述設置,並沒有改變的heroku上工作....但當我看着數據庫與PG:信息 - 我得到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 

回答

8

這是正確的。

當在Heroku上運行,有一個環境變量集(DATABASE_URL),其中包含數據庫URL(如postgres://一個字符串,但在一起久自動生成的用戶名/密碼/數據庫名稱和主機上amazonaws通常情況下)

在本地運行時,未設置DATABASE_URL,因此您使用的是default = '...'數據庫URL(允許您在本地運行代碼以進行開發,並部署到Heroku,而不更改任何代碼)。

這是基於"12factor methodology"(整個文檔幾乎描述的Heroku的結構)

dj_database_url.config只是解析URL中的用戶名/密碼/主機/ DB-名稱,並將其拆分成dictionary format expected by Django - the code比較簡單,如果你很好奇

+0

謝謝!那麼pg:info返回0連接呢?應用程序不會連接至少一個連接嗎? – tbarbe

+0

@tbarbe不確定,我猜這取決於數據庫API是否保持打開持續連接? – dbr