2017-02-11 2 views
1

私は自分のサイトが本番環境でのエラーの詳細を正しく表示できないようにしています。Django:生産中にエラーの詳細を表示しないようにしてください

私は理解冒頭のように私は、しばらくの間、これで苦労してきたことにTrueからDEBUGを変更して必要に応じたエラー(モジュール、コードの行など)すべてを示すからDjangoのを避けるためにFalse in settings.py

しかし、私は、Djangoはまだエラーの詳細を示すので、より多くのビットを調査していたことに気づいて、私は次のようにも必要だったことを知って来た:

  • TEMPLATE_DEBUG = DEBUG
  • 404.html500.html内部settings.pyにテンプレートフォルダ

ユーザーがこれらのメッセージを受け取らないようにするために必要なことはありますか?

そして、Djangoは400のような他の種類のエラーにどう対処しますか?私はhereを見て、400403のハンドラがありますが、私はそれを理解しておらず、基本的な使用の場合には必要かどうかわかりません。

+0

あなたが回避しようとしているDjangoがどのような出力を生成しているかの例を挙げることができますか? 'DEBUG'が' False'に設定され、カスタムハンドラが設定されていないので、ドキュメンテーションによると、単に "403 Forbidden"というテキストを提供します(例えば、)。私が言うことができる限り、HTTPステータスコードには本来備わっていない情報は提供されません。 –

答えて

1

DEBUGFalseの場合、Djangoはエラーの詳細をユーザーに表示しません。あなたのケースでは、最もよく考えられるのは、使用していると思われるファイルsettings.pyを使用していないということです(その場合は、Pythonパス、manage.pyを実行するディレクトリ、およびDJANGO_SETTINGS_MODULEの値を確認する必要があります)。またはsettings.pyに変更した後にGunicorn/uWSGI/Apacheを再起動しなかったことを確認します(Djangoは開発中のように本番環境で自動的に再起動しません)。

400と403は、Djangoのデフォルト値のままにしてください。 Djangoが悪い要求を受け取った場合(これは通常、Apacheやnginxによってキャッチされるため、実際には生成されません)、bad_request()が呼び出され、ユーザーに "400 bad request"と表示されます。他のエラーと同様に

+0

確かに、設定フォルダに2つの設定ファイルがありました: 'local.py'と' production.py'が[here](http://stackoverflow.com/a/15325966/5802289)で説明されています。 'local.py'は私の' .gitignore'にありましたが、何とかリポジトリに含まれていたので、 '.gitignore'に含まれていれば、自動的には削除されません。これを実際にリポジトリから除外したので、 'production.py'のみが含まれていたので、' git rm --cached django_project/settings/local.py'を実行しなければなりませんでした。 – J0ANMM

関連する問題