Simple Exception Response for AJAX debugging

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from django.conf import settings
from django.http import HttpResponseServerError

class AJAXSimpleExceptionResponse:
    def process_exception(self, request, exception):
        if settings.DEBUG:
            if request.is_ajax():
                import sys, traceback
                (exc_type, exc_info, tb) = sys.exc_info()
                response = "%s\n" % exc_type.__name__
                response += "%s\n\n" % exc_info
                response += "TRACEBACK:\n"    
                for tb in traceback.format_tb(tb):
                    response += "%s\n" % tb
                return HttpResponseServerError(response)

More like this

  1. Middleware for printing of exception to console by dballanc 6 years, 7 months ago
  2. View response's content in a browser while testing by ryankask1 3 years, 3 months ago
  3. another render_to_response wrapper by ro60 6 years, 3 months ago
  4. Super User Conditional Page Exception Reporting by zbyte64 5 years, 8 months ago
  5. Log all interaction with user to the DB by inuwashi 3 years, 3 months ago

Comments

luftyluft (on March 19, 2008):

Nice idea - thanks!

#

skabber (on March 19, 2008):

This will be great. Although I have gotten good at finding the exception in the source of the pretty error pages :)

#

robhudson (on March 20, 2008):

Works great. Thanks!

#

trevor (on March 23, 2008):

You can also document.write() on 500 in the javascript to display the error instead of trying to read it in firebug.

#

kioopi (on April 15, 2008):

I use it, too.

I use the Poster firefox add-on for a lot of Ajax-Debugging, but it seems buggy for HTTP_ACCEPT headers.

Thanks.

#

simonbun (on January 28, 2009):

I always detect in my Javascript if the response holds HTML. If it does, I create a floating iframe and pass it the response. That way you can fold/unfold the stack source and use the debug page as usual.

Simon.

#

ramusus (on April 25, 2009):

Is it works with dev(trunk) of django?

I copy code to utils/middleware.py and add line to settings.py:

MIDDLEWARE_CLASSES = (
    ......
    'utils.middleware.AJAXSimpleExceptionResponse'
)

but I don't see any changes in ajax exceptions output..

#

(Forgotten your password?)