序文
他のDjangoコードのビューでは、私は、文書の多くは、マネージャと類似していることがわかりました
#は/ usr / binに/ envをパイソン! インポートのOS インポートsysの 場合 __name__ == ' __main__ ' : os.environ.setdefault(' DJANGO_SETTINGS_MODULE '、' conf.development.settingsは' ) してみてください: から django.core.management 輸入execute_from_command_line 除きますEXCとしてはImportError: 調達(はImportErrorを 「ジャンゴをインポートできませんでしたあなたはそれがインストールされていますよろしいですと。」 "あなたのPYTHONPATH環境変数で利用できますか?あなたはなかった「 」仮想環境をアクティブにするために忘れてしまったら?" )からEXCの execute_from_command_line(sys.argvの)
これは
その後の展開時間と設定ファイルがsetting.pyを.envた参照、環境変数を設定する必要があるが、これはそれが起こったのかですか?
テキスト
前の例にプロジェクトを取り、同僚は、このような構造と書きました。
Djangoのsettings.pyは、いくつかの秘密口座を保存するために、同じディレクトリにも.envファイルの下で、生産フォルダの下のconfフォルダに保存された設定の一部を持っています
だから、着信要求は、Djangoはあるときにどのようにこれらの構成にそれを取得するには?
さんが入る要求を見てみましょう
スーパーバイザが現在のシェルの環境変数の設定を書き込みますとき、最初の全体的なホスティング(スーパーバイザ構成が抜粋の下にあったように)
環境= DJANGO_SETTINGS_MODULE = conf.production.settings
プロセスのこの時点で、環境変数DJANGO_SETTINGS_MODULEのconf.production.settingsあり
次に、settings.pyを解析し、ファイルを見つけるために環境変数をDjangoの従います
コードの一部を見てみましょうsettings.py
初めに、osモジュールとdotenvを引用
doventモジュールは、コードコメントとして環境変数に格納された対応するキーの各行K = Vファイルフォーマット解析を.envできます
#のスプライシングは電流経路がファイル.envの絶対パスである dotenv_path =参加(DIRNAME(__FILE__)、「.env 」) #1 load_dovent解析されたアクションアイテム.env設定ファイル環境変数書き込ま load_dotenv(dotenv_path)
抜粋を提出し.env
その後、我々が見つかりました。いくつかの秘密のアカウント構成でSettings.pyは.envに格納され、設定で導入された環境変数を書き込むことによって開始します
読み取りキーに従ってos.environ.get環境変数を使用し、
そして、いくつかの重要度の低いまたは(例えばジャンゴどの時間帯など)と同じ、それが明示settings.pyで書かれている直接読み込みます
ベネフィット
見掛け密度がセキュリティファイル.envを高めるために、個々のストレージ部分を占め、頻繁に変更設定項目書か.env部分も、メンテナンス性を向上させることが
しかし、以前に理解することがより困難になることがあり、学生の同様のパターンを行っていないため、これはまた、この記事のどこ目的です。私はあなたの助けを願っています。