1

このページの下部に示されているように、Herokuの推奨構造に準拠するDjangoアプリケーションのディレクトリ構造を作成しようとしています。ご覧のとおり、プロジェクトが展開されている層に応じて読み取られる個々の設定ファイル(dev.pyなど)を含む「設定」ディレクトリが作成されます。

これで、設定ディレクトリ内の設定ファイルの1つからインポートする設定ディレクトリと同じレベルの「settings.py」ファイルがあると予想していました。ただし、グラフにはそのような「settings.py」ファイルは表示されず、ディレクトリのみが表示されます。トップレベルのsettings.pyファイルなしで適切な設定ファイルをどのように実行していますか?

実験として、settingsディレクトリと同じレベルにあるsettings.pyファイルを作成しました。問題は、「ru​​nserver」を実行すると、設定ディレクトリのinit.pyファイルでエラーが発生することです。「'Settings'オブジェクトに'ROOT_URLCONF'がありません」 「conf」への設定ディレクトリの名前このエラーは発生しません。

Herokuの人々は、ユーザーがDJANGO_SETTINGS_MODULEをどこかに設定していると想定できますか?そうでない場合、彼らはどのように正しい設定ファイルを読んでいますか?

ありがとう。

4

1 に答える 1

1

pythonが呼び出されたインポートモジュールsettingsである場合、呼び出されたファイルまたは呼び出されてそこに含まsettings.pyれるディレクトリ(pythonモジュール)のいずれかを探します。これがPythonモジュールシステムの仕組みです。settings__init__.py

そこから、initファイル内にインポートする設定ファイルを決定し、prodやなどの内部からインポートすることができますdev。そのページのどこかで説明されていると思いますが、一目でわかりませんでした。

Herokuに関しては、何も想定せず、djangoのデフォルトを使用します。そのため、モジュールsettingsがインポートされています。

また、プロジェクトリポジトリ内でdev / prod設定を使用することに反対するつもりはありませんが、herokuを使用すると、ENV変数を使用してその場で構成を変更するための非常に優れた方法が提供されます。あなたは彼らの(とても良い) djangoチュートリアルでもっと知ることができます。

于 2012-09-03T03:45:39.797 に答える