Djangoプロジェクトの「fromdjango.confimportsettings」と「importsettings」の違いは何ですか


92

私はほとんどの人がそうしていることを読んでいますfrom django.conf import settingsimport settings、djangoプロジェクトファイルで単に行うこととの違いを理解していません。誰かが違いを説明できますか?


django.conf設定は、djangoのデフォルトまたは「グローバル」設定であり、独自のプロジェクトベースの設定で上書きできます。
Jingo 2013年

7
2番目の形式は絶対に使用しないでください。最初のものが唯一の正しいものです。
bruno desthuilliers 2013年

2
しかし、なぜ2番目のものを決して使用しないのですか?
tzenderman 2013年

回答:


111

import settings名前の最初のPythonモジュールをインポートしますsettings.pyで見つかったがsys.path、通常(デフォルトジャンゴセットアップで)、。サイトで定義された設定ファイルへのアクセスのみが許可され、djangoのデフォルト設定(django.conf.global_settings)が上書きされます。

そのため、設定ファイルで指定されていない有効なdjango設定にアクセスしようとすると、エラーが発生します。

django.conf.settingsはファイルではなく、概念、デフォルト設定、およびサイト固有の設定を抽象化するクラスです。Djangoは、を使用するときに他のチェックも行いますfrom django.conf import settings

djangoのドキュメントでも見つけることができます。

お役に立てれば。


5
import settingssettings.py見つかったという名前の最初のPythonモジュールをインポートしsys.pathます。これは、環境変数「DJANGO_SETTINGS_MODULE」で検索される「サイト定義の設定ファイル」ではない可能性があり、任意のPythonパッケージまたはモジュールにすることができます。
bruno desthuilliers 2013年

@brunodesthuilliersありがとうございます。私はあなたの訂正を認識して私の答えを更新します。
juliocesar 2013年

22

from django.conf import settings より良いオプションです。

同じdjangoプロジェクトに異なる設定ファイル(1つは「live」用、もう1つは「dev」用)を使用します。最初のファイルは実行中のファイルを選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.