Skip to content

Instantly share code, notes, and snippets.

@titanjer
Forked from marteinn/gist:5693665
Created December 3, 2013 18:48
Show Gist options
  • Save titanjer/7775170 to your computer and use it in GitHub Desktop.
Save titanjer/7775170 to your computer and use it in GitHub Desktop.
def html_decorator(func):
"""
This decorator wraps the output in html.
(From http://stackoverflow.com/a/14647943)
"""
def _decorated(*args, **kwargs):
response = func(*args, **kwargs)
wrapped = ("<html><body>",
response.content,
"</body></html>")
return HttpResponse(wrapped)
return _decorated
@html_decorator
def debug(request):
"""
Debug endpoint that uses the html_decorator,
"""
path = request.META.get("PATH_INFO")
api_url = path.replace("debug/", "")
view = urlresolvers.resolve(api_url)
accept = request.META.get("HTTP_ACCEPT")
accept += ",application/json"
request.META["HTTP_ACCEPT"] = accept
res = view.func(request, **view.kwargs)
return HttpResponse(res._container)
# And finally attach debug to urls (if settings is on)
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^debug/', debug),
)
"""
Usage:
Lets say your original endpoint is this:
http://example.com/api/v1/cities/
You use the following url the debug it
http://example.com/api/debug/v1/cities/
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment