3

settings.py の上部に次のものがあります。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'dbuser',
        'PASSWORD': 'pw'
        'HOST': '',
        'PORT': '',
    }
}

一番下に私が持っています:

try:
    from local_settings import *
except ImportError:
    pass

local_settings.py では、settings.py ファイルで定義されている DATABASES['default']['host'] を変更したいと考えています。

これは可能ですか?もしそうなら、どのように?DATABASES 設定全体を複製したくありません。HOST を調整したいだけです (別のサーバーを指すように)。

4

4 に答える 4

2

でこれを使用しますsettings.py

try:
    from local_settings import *
    for k,v in _DATABASES:
        if k in DATABASES:
            DATABASES[k].update(v)
        else:
            DATABASES[k] = v
except ImportError:
    pass

あなたの中にこのようなものを入れてくださいlocal_settings.py

_DATABASES = {"default":{"HOST":"new_host"}}

編集:ネストされた辞書に関する@saverioのコメントごとにコードを変更したことに注意してください。

于 2011-04-09T17:21:57.183 に答える
0

通常は逆にするので、settings.pyfrom local_settings import *は settings.py の上部にある local_settings.py をオーバーライドします。通常、db 設定はロケーションベースの設定です。つまり、dev db は開発作業用であり、実際には db 設定を settings.py に追加しません。私の考えでは、settings.py は、プロジェクトが実行されているすべての場所で必要な設定を定義する必要があり、サブセットによって上書きされるべきではありません。

于 2011-04-08T23:45:43.383 に答える
0

execfile()インポートの代わりに使用できます。これにより、settings.py のスコープ内のすべてにアクセスできます。

execfile(os.path.join(os.path.dirname(__file__), 'local_settings.py'))
于 2011-04-09T15:08:07.577 に答える
0

local_settings.py でこれを試してください:

import settings

settings.DATABASES['default']['HOST'] = 'my_host'

お役に立てれば!

于 2011-04-08T23:38:34.047 に答える