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. A custom 500 handler which is AJAX-aware by mallipeddi 5 years, 3 months ago
  2. Firebug Lite Middleware by jfw 4 years, 7 months ago
  3. require XMLHttpRequest view decorator by skam 5 years, 3 months ago
  4. Middleware for printing of exception to console by dballanc 5 years, 8 months ago
  5. Ajax required decorator by zenx 4 years, 12 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.

#

kardelen133 (on May 29, 2008):

very nice article. [url=http://www.tupbebegim.org ]tüp bebek merkezleri[/url] tüp bebek raporu ve tadavisi


ankara nakliyat evden eve nakliyat [HTML_REMOVED]ankara nakliyat[HTML_REMOVED]

#

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?)