質問
以下の複数のDjangosettings.pyファイルへの私のアプローチは合理的ですか(透明、安全など)?
私のアプローチ
私はとを持っていsettings.py
ますsettings_local.py
。settings.py
はバージョン管理下にあり、aはバージョン管理settings_local.py
下にありません。最後に、利用可能な場合settings.py
はインポートを試みます。settings_local.py
このアプローチに対する私の理論は、デフォルト/安全な設定settings.py
をそのままにして、本番環境にプッシュしてデプロイできるというものです。展開時に、settings_local.py
存在せず、そのローカルのみの設定は使用されません。ただし、ローカルで作業する場合settings_local.py
は存在し、そのローカルのみの設定が使用されます。
settings.py
DEBUG = False
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
)
# other settings...
try:
from settings_local import *
except ImportError:
pass
settings_local.py
from settings import *
DEBUG = True
MIDDLEWARE_CLASSES += (
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
# other settings...
このアプローチについての私の懸念は、両方が他方をインポートすることです。これは循環インポートとは見なされませんが、さまざまな状況下でこれらのファイルを結合することを検討することを示す指標としては適切ではないと思います。
settings_local.py
インポートする理由settings.py
は、DRYの原則を遵守しながら、すでに定義されている変数に追加できるようにするためです。たとえば、MIDDLEWARE_CLASSES
完全に再定義せずにに新しいエントリを追加します。
ありがとう!
解決
最終的に、私は上記のアプローチを放棄しました。この問題を解決しようとすることは、私にとって興味深く有益なプロセスでしたが、私の統合されたアプローチには、あまりにも多くの欠点があります。
将来これを見つける人々にとって、最も適切なアプローチは、@DrTyrsaと@MarkLavinによって親切に指摘されたように、このトピックに関するwikiページで概説されている解決策の1つである可能性があります。