django 1.10 プロジェクトを開始しており、設定ファイルを分割したいと考えています。私は既存のソリューションに満足していませんでした。
string
//あるファイルの設定を別のファイルでboolean
オーバーライドできるようにしたくありません。dict
各string
/boolean
/dict
設定は 1 か所だけに設定する必要があります。これにより、物事が定義されている場所を簡単に追跡できます。tuple
手動で拡張/list
設定する必要はありませんINSTALLED_APPS += (test_app)
。これは面倒なようで、他のファイルでリストまたはタプルが使用されているかどうかを追跡する必要があります。複数のファイル
import os
で定義する必要はありません。BASE_DIR
ドライ。
他の多くのものを見た私の解決策は、、およびsettings.py
を含むディレクトリに置き換えることです。local_settings.py
common_settings.py
__init__.py
では__init__.py
、私import os
と計算しBASE_DIR
ます。そして私は・・・それから私は
import builtins
builtins.BASE_DIR = BASE_DIR
builtins.os = os
from .common_settings import *
from . import local_settings
# At this point both modules have run and we no longer need to be messing
# with the builtins namespace.
del builtins.BASE_DIR
del builtins.os
del builtins
次に、最初の 2 つの要件を達成するためにループしdir(local_settings)
ていじりglobals()
ます (要求があればすべてを投稿できますが、の使用に興味がありますbuiltins
)。
これはbuiltins
あまりにも悪用ですか?何がそれを壊すことができます。明らかに、いずれかの識別子が の新しいバージョンの属性と衝突すると、builtins
このコードは python を壊します。これらの識別子のいずれかを使用する関数が設定ファイルの 1 つで終了し、後で呼び出された場合、それは機能しなくなります。
しかし、私はそれらのどちらも起こっているのを見ません。私が見ていない潜在的な問題はありますか?