django-debug-toolbar needs its output to be html, but django-tastypie's default output format is json.
I tried sending http://localhost/api/v1/resource/?format=html
but it says Sorry, not implemented yet. Please append "?format=json" to your URL
Even though this doc lists html as one of valid option, it says its on the TODO list
.
http://django-tastypie.readthedocs.org/en/latest/serialization.html#to-html
How do I use debug toolbar to debug tastypie api calls?
(eg, I'd like to see how many sql queries are being run for api calls.. and so on)
Maybe I can call the api from django views but how?
Here is a middleware I wrote for similar purposes that wraps json in HTML for enabling the debug toolbar and also pretty prints it. Furthermore, it supports binary data. I'm not using tastypie, but I think it should work with that too.
# settings-dev.py from django.http import HttpResponse import json MIDDLEWARE_CLASSES += ( 'debug_toolbar.middleware.DebugToolbarMiddleware', 'NonHtmlDebugToolbarMiddleware', ) class NonHtmlDebugToolbarMiddleware(object): """ The Django Debug Toolbar usually only works for views that return HTML. This middleware wraps any non-HTML response in HTML if the request has a 'debug' query parameter (e.g. http://localhost/foo?debug) Special handling for json (pretty printing) and binary data (only show data length) """ @staticmethod def process_response(request, response): if request.GET.get('debug') == '': if response['Content-Type'] == 'application/octet-stream': new_content = '<html><body>Binary Data, ' \ 'Length: {}</body></html>'.format(len(response.content)) response = HttpResponse(new_content) elif response['Content-Type'] != 'text/html': content = response.content try: json_ = json.loads(content) content = json.dumps(json_, sort_keys=True, indent=2) except ValueError: pass response = HttpResponse('<html><body><pre>{}' '</pre></body></html>'.format(content)) return response
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With