私のDjangoサイトからのエラー例外のEメールを受け取ったら、現在ログインしているユーザーのUserおよび/またはUserProfile情報を見ると便利です。これをDjangoサイトの例外エラーメールにどのように追加しますか?ログインしたユーザーをDjango例外エラーメッセージに添付するにはどうすればいいですか?
答えて
Djangoは、電子メールの最後にrepr(要求)を追加します。あなたは
としてログインしているユーザー「LOGNAME」見つけることができますデフォルトのWSGIの開発サーバーの使用:それは角括弧に包まれているよう「myuserのを」、
これは、一部の電子メールクライアントに隠すことができます。
にprocess_exception(自己、リクエスト、例外)
要求がのHttpRequestオブジェクトです:
<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
...
'LOGNAME': 'myuser',
...
wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
また、あなたはにprocess_exceptionメソッドを実装するカスタムミドルウェアを実装することができます。例外は、view関数によって生成されたExceptionオブジェクトです。
ビューが例外を発生させると、Djangoはprocess_exception()を呼び出します。 process_exception()は、NoneまたはHttpResponseオブジェクトを返さなければなりません。 HttpResponseオブジェクトを返すと、応答がブラウザに返されます。それ以外の場合は、デフォルトの例外処理が実行されます。
また、ミドルウェアは、応答フェーズでは逆の順序で実行されます。これにはprocess_exceptionが含まれます。例外ミドルウェアが応答を返すと、そのミドルウェアより上のミドルウェアクラスはまったく呼び出されません。
@ jsamsaの回答は、Djangoの変更により、もはや真実ではないようです(少なくともエラーメールには「LOGNAME」フィールドはありません)。
私は完全なdjango htmlエラーページをメールで受け取るために、別の投稿をしています。上の詳細はこちら: https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.AdminEmailHandler
と、このticketが親切にあなたがこれを行うことができますことを指摘:以降のDjangoバージョン1.10から
LOGGING['handlers']['mail_admins']['include_html'] = True
'include_html'を使うと、あなたはきれいなHTMLの電子メールを実際に受け取ることができますが、エラーの原因となったユーザのユーザ名はどこで見つけることができますか?少なくとも私はそれを見つけることができませんでした。 'logname'は私が郵送したものの一部ではありません。また、エラーが表示されたページがログインしているユーザーにしか見えないため、ユーザーがログインしたと確信しています。 – SaeX
は、これがネイティブにサポートされています。https://docs.djangoproject.com/en/dev/releases/1.10/を参照してください。
デバッグビューにrequest.userを追加しました。
- 1. Djangoにログインしているユーザーの名字を取得するにはどうすればよいですか?
- 2. CSSをテンプレートに添付するにはどうすればいいですか?
- 3. 外部CSSファイルをマスターページに正しく添付するにはどうすればいいですか?
- 4. ログインしたユーザーがDjangoバージョン1.9の 'ログイン'または 'サインアップ'ページにアクセスできないようにするにはどうすればよいですか?
- 5. PDF添付ファイルをPDFとして正しく添付するにはどうすればよいですか?
- 6. 添付されていないMySQLユーザーを削除するにはどうしたらいいですか?
- 7. タップイベントをuiwebviewに添付するにはどうすればよいですか?
- 8. Laravel4でwithErrorsを例外エラーメッセージとともに使用するにはどうすればよいですか?
- 9. ログインしているユーザーにデータベースエントリを添付しているレール
- 10. イメージのツールチップをXAMLの例外エラーメッセージにバインドするにはどうすればよいですか?ここ
- 11. ログインしているユーザーにコントローラの外部からアクセスするにはどうしたらいいですか?
- 12. Django rest_social_authログイン。facebookトークンをどうすればいいですか?
- 13. 私が作成したコールフローをルーティングプロファイルに添付するにはどうすればいいですか?
- 14. DEBUG = Falseの場合、ログファイルにdjangoの例外を記録するにはどうすればいいですか?
- 15. ログインしているユーザーのユーザー名をJDBCRealmで取得するにはどうすればよいですか?
- 16. Androidのシリアル化されたビットマップにEXIFメタデータを添付するにはどうすればいいですか?
- 17. djangoでリクエスト外の現在のユーザーにアクセスするにはどうすればいいですか
- 18. Excelファイルを保存して新しいオブジェクトに添付するにはどうすればいいですか?
- 19. firebaseのAndroidにログインしたときに、ログインした他のユーザーのリストをユーザーに表示するにはどうすればいいですか?
- 20. Visual Studio 2010デバッガでユーザー定義の例外を除外するにはどうすればよいですか?
- 21. シンプルメンバーシップ - 登録していないユーザーのエラーメッセージを表示するにはどうすればいいですか?
- 22. app-engineパッチ - 外国語でDjangoシステムのエラーメッセージを表示するにはどうしたらいいですか?
- 23. 例外を回避するにはどうすればいいですか
- 24. Djangoにログインするにはどうしたらいいですか?
- 25. アプリiOSに添付ファイル付きのメールを送信するにはどうすればいいですか?
- 26. ユーザーとログインするにはどうすればよいですか?
- 27. ログインしているユーザーからオプトインスクリプトを非表示にするにはどうすればよいですか?
- 28. ログインしたユーザーに応じてページにデータをロードするにはどうすればよいですか?
- 29. ログインしたユーザーをdirect_to_templateに渡すにはどうすればいいですか?
- 30. ソーシャルメディアでログインした後にユーザーの詳細を取得するにはどうすればよいですか?
+1ミドルウェアの提案...実際には、このアプローチをかなりうまく使用しています。 –
これは少なくともDjango 1.9では動作しません(古いバージョンも影響を受ける可能性があります)。 – SaeX