0

Djangoのドキュメントには次のように書かれています。

DEBUG が False の場合、コードが未処理の例外を発生させ、内部サーバー エラー (HTTP ステータス コード 500) が発生するたびに、Django は ADMINS 設定にリストされているユーザーに電子メールを送信します。

しかし、これにはdjango管理サイトが含まれますか? そうでない場合、どうすればそのようなレポートを有効にできますか?

Exception意図的に ModelAdmin サブクラスを作成すると、メールが届かないため、これを求めています。

一方、手動で送信しようとしたところ、正常に動作しました。

$ ./manage.py shell
>>> from django.core.mail import EmailMessage
>>> email = EmailMessage('Hello', 'World', to=['email@example.com'])
>>> email.send()

更新: また、Django は、アプリケーションの API 部分 (ピストンによって駆動される) で例外が発生したときにクラッシュ レポートを送信します。

どんな助けでも大歓迎です。

4

1 に答える 1

0

この場合、管理サイトについて特別なことは何もありません。管理ビューで未処理の例外が発生すると、Django からメールが送信されます。

トラブルシューティングのアイデア 1

管理者以外のビューの電子メールを受信するかどうかをテストしましたか? 権限の問題でしょうか?シェルからの電子メール送信をテストするときとは異なるユーザーとして Web サーバーが実行されている可能性があります。

トラブルシューティングのアイデア 2

ModelAdmin のどこで例外を発生させていますか?

リクエストが処理されるときではなく、ModelAdmin クラスが定義されるときに例外が発生するため、次の例は機能しません。

class MyModelAdmin(ModelAdmin):
    raise Exception

代わりに、メソッドで例外を発生させます。次のモデルの変更ビュー URL にアクセスすると、そのモデルの電子メールが送信されます (例: /admin/app/mymodel/) 。

class MyModelAdmin(ModelAdmin):
    def get_queryset(self, request, queryset):
        raise Exception
于 2011-11-03T15:50:14.047 に答える