当我从Django站点收到错误异常电子邮件时,查看当前登录用户的User和/或UserProfile信息会很有用。如何将此添加到Django站点异常错误电子邮件?
答案 0 :(得分:5)
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,exception)
request是一个HttpRequest对象。 exception是由view函数引发的Exception对象。
Django在视图引发异常时调用process_exception()。 process_exception()应返回None或HttpResponse对象。如果它返回一个HttpResponse对象,则响应将返回给浏览器。否则,默认的异常处理就会启动。
同样,中间件在响应阶段以相反的顺序运行,其中包括process_exception。如果异常中间件返回响应,则根本不会调用该中间件之上的中间件类。
答案 1 :(得分:4)
我发布了一个替代方案,通过电子邮件接收完整的django html错误页面。详细信息如下: https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.AdminEmailHandler
这个ticket有助于指出你可以这样做:
LOGGING['handlers']['mail_admins']['include_html'] = True
答案 2 :(得分:0)
从Django版本1.10开始,本机支持此功能:请参阅https://docs.djangoproject.com/en/dev/releases/1.10/。
将request.user添加到调试视图中。