1

django 1.10 プロジェクトを開始しており、設定ファイルを分割したいと考えています。私は既存のソリューションに満足していませんでした。

  1. string//あるファイルの設定を別のファイルでbooleanオーバーライドできるようにしたくありません。dictstring/ boolean/dict設定は 1 か所だけに設定する必要があります。これにより、物事が定義されている場所を簡単に追跡できます。
  2. tuple手動で拡張/list設定する必要はありませんINSTALLED_APPS += (test_app)。これは面倒なようで、他のファイルでリストまたはタプルが使用されているかどうかを追跡する必要があります。

  3. 複数のファイルimport osで定義する必要はありません。BASE_DIRドライ。

他の多くのものを見た私の解決策は、、およびsettings.pyを含むディレクトリに置き換えることです。local_settings.pycommon_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 つで終了し、後で呼び出された場合、それは機能しなくなります。

しかし、私はそれらのどちらも起こっているのを見ません。私が見ていない潜在的な問題はありますか?

4

1 に答える 1