2012-06-17 12 views
30

私はenvデータベース設定を追加する際にこれらの指示に従ってから、私のローカルdevのdjangoアプリケーションを動作させようとしています。Herokuデータベース設定注入 - devのdjangoデータベースを設定するには?

https://devcenter.heroku.com/articles/django-injection

私は指示に従ったが、私のアプリはもともとローカルデータベースに

Request Method: GET 
Request URL: http://localhost:8000 
Django Version: 1.4 
Exception Type: ImproperlyConfigured 
Exception Value:  
You need to specify NAME in your Django settings file. 

私のデータベースの設定にアクセスしようとすると、次のエラーを取得し、

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'db',      # Or path to database file if using sqlite3. 
     'USER': 'foo',      # Not used with sqlite3. 
     'PASSWORD': 'bar',     # Not used with sqlite3. 
     'HOST': 'localhost',     
     'PORT': '5432', 
    } 
} 

は、Herokuの記事は述べています設定ファイルに以下を追加する

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

DATABASE_URLがdevで利用できない場合、私の開発者設定を使用するにはどのようにしてdj_database_url.configを取得しますか?

答えて

38

あなたはちょうどこのようなデフォルト値にあなたのdevの設定を追加することができます...

import dj_database_url 
DATABASES = {'default': dj_database_url.config(default='postgres://foo:[email protected]:5432/db')} 
+1

これはどのようにエンジンを設定しますか?少なくともローカル環境では必要ですか? – GreenAsJade

+0

'dj_database_url.config'メソッドを見れば、ENGINE値はデータベースURLのスキーム、すなわち' postgres:// ' – donturner

+0

から派生していることがわかります。環境変数にDATABASE_URLを定義すると良いでしょうconfig()が読み込みます。 – Bill

8

オペレーティングシステムに環境変数を設定して、それが設定されているかどうかを確認するだけです。たとえば、UNIXシステムでは:

また
# In ~/.bash_profile 
export LOCAL_DEV=true 

# In settings.py 
import dj_database_url 
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')} 

if bool(os.environ.get('LOCAL_DEV', False)): 
    # Override DATABASES['default'] with your local database configuration 

、あなたはHerokuのスペースにset an environment variableする必要がある場合:

heroku config:add MY_VAR='my_value' 
+2

によってyourhosturlを交換することは実際には正しい構文は 'Herokuのコンフィグです:MY_VARを追加= 'あなたは正しいです:)おかげで、私は –

+0

をmy_value''それを訂正した。 –

+0

heroku config:set MY_VAR = 'value'も大丈夫です。 addはエイリアスです – babttz

13

あなたのsettings.pyでこれを使用します。

DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])} 

とあなたの.envファイルには、これを持って:あなたは「職長スタート」を起動したときに

DATABASE_URL=postgres://localhost/yourdbname 

それは.envファイルを見て、ちょうどHerokuの自体上で実行されているようにすべてのこれらの環境変数を作成します。 「heroku config」と入力して、DATABASE_URLが設定されていることを確認します。これは、postgresデータベースアドオンを追加した場合に必要です。

+2

config()がデフォルトで読み込む環境変数であるDATABASE_URLに 'default'を割り当てるのは冗長です。 – Bill

5

は、私はこれを試してみましたし、ここに私のコードです:

import dj_database_url 

local_db = 'postgres://django_login:[email protected]/django_db' 
DATABASES = {'default': dj_database_url.config(default=local_db)} 

私のデータベース名、ユーザー名は「django_login」、パスワードは「123456」であり、「django_db」です。

私のコードは、ローカルマシンとherokuの両方で実行できます。

1

インポートdj_database_url

DATABASES = { 'デフォルト': dj_database_url。設定(デフォルト= 'postgresの:// あなたのユーザ名あなたのパスワード yourhosturl @:5432/yourdbname')}

**データベース設定 ローカル使用している場合で大胆な文字列を置き換えデータベースその後、localhostの

関連する問題