2015-05-05 262 views
2

我正在開發我的第一個Heroku/Django應用程序。我只是想確定我正確設置了我的DATABASE_URLDATABASES變量。下面是在我的代碼:我應該如何設置我的DATABASE_URL?

import dj_database_url 

DATABASE_URL = 'postgresql:///my_app' 

# Parse database configuration from $DATABASE_URL 
DATABASES = { 
    'default': dj_database_url.config(default=DATABASE_URL) 
} 

當我只是有DATABASES['default'] = dj_database_url.config(),我嘗試使用像run servermigrate我收到以下錯誤Django的命令:NameError: name 'DATABASES' is not defined。我設置了DATABASE_URL,因爲這樣做似乎解決了這個問題(在我創建了my_app數據庫之後)。

一切似乎都正常工作,因爲我編碼和測試,但我也看到了在互聯網上設置數據庫變量的六種不同方式。如果這不正確,我想現在解決它。讓我困惑的是,當我將應用推送到Heroku時,當數據庫是/ usr/local/var/postgres時,數據如何被推送到網絡?或者這不會發生?我在這一點上太困惑/厭倦了嗎?

+0

'DATABASES ['default'] = dj_database_url.config()'返回NameError,因爲DATABASES字典不存在。 DATABASES ['default'] = dj_database_url.config()' 應該可以工作 – moonstruck

回答

1

這是一個簡單的邏輯問題。在定義字典本身之前,您無法設置DATABASES字典的「默認」鍵。

無論你default參數設置爲dj_database_url通話單獨DATABASE_URL變量中或者是無關緊要的,尤其是作爲甚至不會在Heroku上使用,因爲它會被環境變量覆蓋。

+0

沒錯。我忘記了我刪除了DATABASES的原始聲明。感謝您指出了這一點。 –

6

這是記錄在

# Parse database configuration from $DATABASE_URL 
import dj_database_url 
# DATABASES['default'] = dj_database_url.config() 
#updated 
DATABASES = {'default': dj_database_url.config(default='postgres://user:[email protected]/dbname')} 

如果需要Database connection pooling添加此位了。 More details

# Enable Connection Pooling 
DATABASES['default']['ENGINE'] = 'django_postgrespool' 
+0

因此,當我只有'DATABASES ['default'] = dj_database_url.config()',我嘗試使用Django命令像'runserver'或'migrate'我得到以下錯誤:'NameError:name'DATABASES'未定義'。我設置了DATABASE_URL,因爲這樣似乎解決了這個問題。 –

相關問題