Login

Prettify HTML body contents in HTTP response

Author:
n1k0
Posted:
November 29, 2010
Language:
Python
Version:
1.2
Score:
4 (after 4 ratings)

This is an enhancement of snippet #172. Here I use BeautifulSoup — far more easier to install through pip in a virtualenv, and possibly a bit more maintained — to format and properly indent the rendered HTML from templates.

I also added a check to only tidy contents in a DEBUG=True environment, regarding high impact on performance while doing so in production.

Last, it's compatible with Django 1.2.x.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import settings

from BeautifulSoup import BeautifulSoup


class PrettifyMiddleware(object):
    """HTML code prettification middleware."""
    def process_response(self, request, response):
        if settings.DEBUG and response['Content-Type'].split(';', 1)[0] == 'text/html':
            response.content = BeautifulSoup(response.content).prettify()
        return response

More like this

  1. Template tag - list punctuation for a list of items by shapiromatron 11 months, 2 weeks ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 3 weeks ago
  3. Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
  5. Help text hyperlinks by sa2812 1 year, 7 months ago

Comments

cricogik (on December 7, 2010):

It's ok n1k0. Yours version of PrettifyMiddleware is better because #570 don't check DEBUG status.

#

Please login first before commenting.