Как прикрепить зарегистрированного пользователя к сообщениям об ошибках Django? - PullRequest
2 голосов
/ 13 мая 2009

Когда я получаю электронное письмо об исключении ошибки с моего сайта Django, было бы полезно просмотреть информацию о пользователе и / или профиле пользователя для текущего вошедшего в систему пользователя. Как добавить это в электронные письма об ошибках на сайте Django?

Ответы [ 3 ]

5 голосов
/ 13 мая 2009

Django добавляет repr (запрос) в конце письма. Используя сервер разработки wsgi по умолчанию, вы можете найти вошедшего в систему пользователя как

'LOGNAME': 'myuser',

Это может быть скрыто в некоторых почтовых клиентах, поскольку оно заключено в угловые скобки.

<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
...
'LOGNAME': 'myuser', 
...
wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>

Также вы можете реализовать пользовательское промежуточное программное обеспечение, реализующее метод process_exception:

process_exception (self, request, исключение)

запрос является объектом HttpRequest. исключение - это объект Exception, возбуждаемый функцией view.

Django вызывает process_exception (), когда представление вызывает исключение. process_exception () должен возвращать None или объект HttpResponse. Если он возвращает объект HttpResponse, ответ будет возвращен браузеру. В противном случае запускается обработка исключений по умолчанию.

Опять, промежуточное программное обеспечение запускается в обратном порядке на этапе ответа, который включает в себя process_exception. Если промежуточное программное обеспечение исключения возвращает ответ, классы промежуточного программного обеспечения выше этого промежуточного программного обеспечения вообще не будут вызываться.

4 голосов
/ 07 сентября 2011

@ jsamsa ответ больше не кажется правдивым из-за изменений в Django (по крайней мере, я не получаю поле 'LOGNAME' в сообщениях об ошибках).

Я публикую альтернативу, чтобы получить полную страницу ошибки django html по электронной почте. Подробности об этом здесь: https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.AdminEmailHandler

и этот билет услужливо указывает, что вы можете сделать это:

LOGGING['handlers']['mail_admins']['include_html'] = True
0 голосов
/ 01 марта 2016

Начиная с версии Django 1.10, это поддерживается изначально: см. https://docs.djangoproject.com/en/dev/releases/1.10/.

Добавлен request.user в представление отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...