2011-07-13 12 views

Respuesta

14

Si no desea utilizar centinela puede utilizar este sencillo middleware para conectar un cable de usuarios-infos al correo de error:

# source: https://gist.github.com/646372 
class ExceptionUserInfoMiddleware(object): 
    """ 
    Adds user details to request context on receiving an exception, so that they show up in the error emails. 

    Add to settings.MIDDLEWARE_CLASSES and keep it outermost(i.e. on top if possible). This allows 
    it to catch exceptions in other middlewares as well. 
    """ 

    def process_exception(self, request, exception): 
     """ 
     Process the exception. 

     :Parameters: 
      - `request`: request that caused the exception 
      - `exception`: actual exception being raised 
     """ 

     try: 
      if request.user.is_authenticated(): 
       request.META['USERNAME'] = str(request.user.username) 
       request.META['USER_EMAIL'] = str(request.user.email) 
     except: 
      pass 

Usted simplemente puede poner esta clase en un archivo * .py en cualquier parte debajo de su proyecto Django y agregue una referencia al MIDDLEWARE_CLASSES. Es decir. si lo coloca en un archivo "middleware" en la raíz del proyecto (donde está su settings.py), simplemente agregue middleware.ExceptionUserInfoMiddleware.

+0

Esto parece simple. Entonces, ¿todo lo que hace es agregar estos dos valores a las cosas que Django va a incluir en el correo electrónico de todos modos? Entonces Django envía el correo electrónico normalmente? – Greg

+0

¿En qué archivo colocaría esta clase? Y luego solo lo importo y lo menciono desde settings.py? – Greg

+0

@Greg He actualizado la respuesta. –

Cuestiones relacionadas