- March 19, 2008
- 14 (after 14 ratings)
When debugging AJAX with Firebug, if a response is 500, it is a pain to have to view the entire source of the pretty exception page. This is a simple middleware that just returns the exception without any markup. You can add this anywhere in your python path and then put it in you settings file. It will only unprettify your exceptions when there is a XMLHttpRequest header. Tested in FF2 with the YUI XHR. Comments welcome.
EDIT: I recently changed the request checking to use the is_ajax() method. This gives you access to these simple exceptions for get requests as well (even though you could just point your browser there).
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
- Stuff by NixonDash 1 month ago
- Add custom fields to the built-in Group model by jmoppel 3 months ago
- Month / Year SelectDateWidget based on django SelectDateWidget by pierreben 6 months, 2 weeks ago
- Python Django CRUD Example Tutorial by tuts_station 7 months ago
- Browser-native date input field by kytta 8 months, 2 weeks ago
Nice idea - thanks!
This will be great. Although I have gotten good at finding the exception in the source of the pretty error pages :)
Works great. Thanks!
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.
Is it works with dev(trunk) of django?
I copy code to utils/middleware.py and add line to settings.py:
but I don't see any changes in ajax exceptions output..
Please login first before commenting.