Будет ли Django отправлять мне электронные письма, если на сайте администратора возникнет исключение? - PullRequest
0 голосов
/ 03 ноября 2011

Django документация говорит:

Когда DEBUG имеет значение False, Django будет отправлять сообщения по электронной почте пользователям, указанным в настройке ADMINS, всякий раз, когда ваш код вызывает необработанное исключение и приводит к внутреннему серверуошибка (код состояния HTTP 500).

Но включает ли это сайт администратора django?А если нет, то как я могу включить такую ​​отчетность?

Я спрашиваю об этом, потому что, когда я намеренно поднимаю Exception в подклассе ModelAdmin, я не получаю электронную почту.

С другой стороны, япопытался отправить вручную, и все работает нормально.

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

ОБНОВЛЕНИЕ: Также Django отправляет отчеты о сбоях при возникновении исключения в части API приложения (управляемой поршнем).

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 03 ноября 2011

В этом случае нет ничего особенного в админ-сайте.Django отправит вам электронное письмо, когда представление администратора вызовет необработанное исключение.

Идея устранения неполадок 1

Вы проверяли, получаете ли вы письмо для просмотра без прав администратора?Может ли это быть проблема с разрешениями?Возможно, веб-сервер работает от имени другого пользователя, чем при тестировании электронной почты из оболочки.

Идея устранения неполадок 2

Где в ModelAdmin вы вызываете исключение?

Следующий пример не будет работать, поскольку исключение возникает при определении класса ModelAdmin, а не при обработке запроса.

class MyModelAdmin(ModelAdmin):
    raise Exception

Вместо этого вызовите исключение в методе.Вы должны получить электронное письмо для следующей модели, если вы перейдете по ссылке изменения вида (например, /admin/app/mymodel/)

class MyModelAdmin(ModelAdmin):
    def get_queryset(self, request, queryset):
        raise Exception
...