からカスタム変数をインポートすることはできません:今ジャンゴ:私はsettings.pyでカスタム変数<code>mongo_db</code>定義された設定
# connect to test database for tests and real database otherwise
if is_test():
mongo_db = mongoengine.connect(db='test-workflows', host='workflows-mongo')
else:
mongo_db = mongoengine.connect(db='workflows', host='workflows-mongo')
を、私はtests.py
(またはpython manage.py shell
から)からそれをインポートしようとしています、どちらも失敗しました:
from django.conf import settings
settings.mongo_db
AttributeError: 'Settings' object has no attribute 'mongo_db'
何が問題なのですか。
UPDATE: IIRC、Djangoはデフォルトの設定がsettings.py
で定義された値、とdjango.conf.global_settings
オブジェクトオーバーライドすることでdjango.conf.settings
を構築します。
したがって、from django.conf import settings; settings.mongo_db
では、django.conf.settings
がmongo_db
で更新されないことがあります。これは、デフォルトオプションの中にはありません。
また、Django documentation saysことdjango.conf.settings
はオブジェクト、ないモジュールあるので、あなたはfrom django.conf.settings import VARIABLE
を言うことはできません。幸いにも、私はそれをやっていません。
ありがとうございます。 「ワークフローのインポート設定」から使用され、機能しました。 9分で答えを受け入れるでしょう –
また、あなたは私が見ることのできる設定から実際の接続を行っていました。設定には適していないかもしれません。設定では、実際のデータベース接続を開始する代わりに静的情報を格納する必要があります。あなたは '{db: 'test-workflows'、 'host': 'workflows-mongo'}'のような辞書を保存し、 'test.py'に' connect() 'を実行することができます。 –
@ ShangWangこれは一般的にいい考えですが、どこかに格納されたmongodbへのグローバルな接続プールが必要です。 'views.py'、' test.py'(そして 'manage.py shell'の中で)で初期化することは適切ではありません。私はそのようなグローバルな目的のために良い場所を考えることはできません。 –