0

私は Django を初めて使用し、チュートリアルに取り組んでいます。標準スクリプトのようにファイルを実行すると、通常は構文エラーまたは名前エラーが発生するコードを少し太らせました。ただし、Web ブラウザーでビューを参照しようとするとmanage.py runserver、関連するエラー/トレースバックのない空白のページが表示されます。同じことが、私が実行したコンソールにも当てはまりますmanage.py runserver。GET 要求が表示されるだけです。また、サーバーを起動すると、コンソールに「0 個のエラーが見つかりました」と表示されましたが、これは明らかに誤りでした。

私の質問は、Django はどのようにエラーとトレースバックを報告するのですか? 何かを有効にする必要がありますか? (私はDEBUG = True自分の settings.py ファイルにあります) ちょっとしたタイプミスをすると、突然 Web サイト全体が機能しなくなり、どこに問題があるかについてのレポートが得られないので、ちょっと不安です。

4

1 に答える 1

1

開発サーバーの実行に関しては、サーバーの起動時にエラーが 0 件見つかったと表示されます。settings.pyこれは通常、ファイルとモデルの構成と構文を指します。通常、ビュー ハンドラーを経由しないスタートアップ コード パスを介して発生するエラーのみを報告します。

ファイルを変更すると、開発サーバーはそれ自体をリロードするのに十分なほどスマートです。構文エラーは、開発サーバーをクラッシュさせます。

空白のページが表示され、GET リクエストが正常に返される場合、コードは Django の観点からは正常に動作しています。応答が正しくないことはわかっていますが、要求を処理して応答を返しています。通常、ここで構文エラーが発生すると、ビューは 500 を返します。ここで、ビューに返されたデバッグ情報が表示され (if DEBUG = True)、コンソールにも表示されます。ビューハンドラーを正常に通過して空白のページを返すため、タイプミスは有効な python だったようです。ここでは、Django に関する単体テスト以外にできることは何もありません。空白のページは有効な応答である可能性があります。

開発から本番環境に移行するにつれて、ページでエラーが発生したときに知りたいと思うでしょう。 Django は、エラーやその他のメッセージを処理するために、Python のロギング フレームワークから構築されています。settings.pyファイルのデフォルトでは、mail_adminsエラーを処理するハンドラーを設定しますdjango.request。設定ファイルで設定するADMINSEMAIL_BACKEND、サーバーで発生した 500 エラーのスタック トレースが電子メールで送信されます。より洗練されたものになると、メッセージを Python のログ フレームワークとカスタム ハンドラーに送信することで、独自のログを作成できます。

import logging

logger = logging.GetLogger(__name__) #using the module name so in your settings.py you can configure different settings per module

logger.info('msg')
logger.error('msg')

ヒット カウントを行い、エラー ログを保存する、エラー メッセージのハンドラーとしてSentryを検討することをお勧めします。

于 2013-11-15T03:40:07.877 に答える