2011-07-13 16 views

Odpowiedz

14

Jeśli nie chcesz używać wartownika można użyć tego prostego middleware do attache przez użytkownika-Infos do poczty błędzie:

# 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 

można po prostu umieścić tę klasę w pliku * .py nigdzie poniżej twojego projektu Django i dodaj odniesienie do MIDDLEWARE_CLASSES. To znaczy. jeśli umieścisz go w pliku "middleware" w katalogu głównym projektu (gdzie znajduje się plik settings.py), po prostu dodaj middleware.ExceptionUserInfoMiddleware.

+0

To wygląda na proste. Więc wszystko, co robisz, to dodawanie tych dwóch wartości do rzeczy, które Django ma w e-mailu zamieścić? Następnie Django wysyła wiadomość e-mail w normalny sposób? – Greg

+0

Jaki plik mam umieścić w tej klasie? A potem po prostu go zaimportuję i odwołuję się do niego z settings.py? – Greg

+0

@Greg Zaktualizowałem odpowiedź. –

Powiązane problemy