web-dev-qa-db-ja.com

Django:設定変数が設定されているかどうかを確認します

これが私が達成しようとしていることの例です。望ましい効果は、関連する設定が定義されている場合にのみ、特定の機能が有効になることです。それ以外の場合は、機能を無効にする必要があります。

settings.py:

SOME_VARIABLE = 'some-string'
ANOTHER_VARIABLE = 'another-string'

random_code_file.py:

from Django.conf import settings

if settings.is_defined('ANOTHER_VARIABLE'): # <- I need this.
    do_something(settings.ANOTHER_VARIABLE)
else:
    do_something_completely_different()

上記のコードでは、settings.is_definedの代わりに何をすべきかがありません。

これが問題に対する全体として間違ったアプローチである場合は、代替のアプローチについても聞いていただければ幸いです。必要な効果は、関連する設定が存在する場合にのみ有効になる自動アクティブ化機能です。機能が有効になるかどうかを評価するために、特別なsettings.ACTIVE_FEATURES設定や、空白文字列やNoneなどの特別な値を使用しないことをお勧めします。

最後にやりたいのは、try/exceptを使用することです。機能が除外されていることを示す空の値を使用します。 -しかし、それが実際に推奨される方法である場合は、完全なソースまたは説明が提供されている場合は、答えを正しいとマークします。実際、それはどんな答えにも当てはまります。

つまり、Djangoで設定変数が定義されているかどうかを確認する適切な方法が必要です。

前もって感謝します!

37
Teekin

あなたはそれを正しい方法にしたようです:インポート設定モジュールとチェック

そしてあなたは使うことを試みることができます:

if hasattr(settings, 'ANOTHER_VARIABLE'):

の代わりに:

if settings.is_defined('ANOTHER_VARIABLE'):

ドキュメント が見つかりました。これが役立つことを願っています。

64
Alfred Huang