2017-09-21 23 views
0

私のDjangoプロジェクトの秘密鍵は、私が/etc/environmentでのenv変数としてこれを設定しようとしているなど#@^*などの特殊文字が含まれているとして。環境変数

私は、ファイルに次のものがあります。

export SECRET_KEY='zotpbek!*t_abkrfdpo!*^@#plg6qt-x6(%dg)9p(qoj_r45y8' 

すなわち、文字列の前後に特殊文字が含まれているため、一重引用符を使用しています(this SO postでも規定されています)。ファイルを終了してsource /etc/environmentを実行します。次に、端末にenvと入力します。SECRET__KEYが正しく表示されます。

ログアウトして再度ログインします。もう一度envと入力してください。

今度はSECRET_KEYが表示されますが、@文字を超えて切り取られています。これは、#文字を超えたすべてのものを除きます。

この問題を解決するにはどうすればよいですか?二重引用符で試しても何も緩和されませんでした。私のOSはUbuntu 14.04 LTSです。


p.s.私は、環境変数がアクセス制御をサポートしていないことを認識しています。 Djangoの秘密鍵をenv varに設定しない理由はたくさんあります。この質問の目的のために、それをバックバーナーに置いてみましょう。

答えて

0

これはDjangoの問題そのものではありません。この質問によるとEscape hash mark (#) in /etc/environment/etc/environmentで "#"を使用することはできません。

秘密鍵を#sなしで取得するまで、秘密鍵を再生成することをお勧めします。これは問題を解決するはずです。 Django Extensionsには、これに対してコマンドgenerate_secret_keyがあります。秘密鍵を変更する副作用は、現在のセッションが無効になることです。つまり、アプリケーションの他の場所で使用している場合を除きます。

+1

次に、秘密鍵が最初に設定された後に正しく表示されたのはなぜですか? –