HTML整形ミドルウェア

テンプレートエンジンを使うと出力されるHTMLがキモい!とデザイナーの人に言われたので、3分ハッキング。

必要なもの:

# -*- coding: utf-8 -*-

from wsgifilter import Filter
from BeautifulSoup import BeautifulSoup

class HTMLPrettifyFilter(Filter):
    def filter(self, environ, headers, data):
        return BeautifulSoup(data).prettify()

このミドルウェアを使うには、config/middleware.pyで以下のように設定する。

    # YOUR MIDDLEWARE
    # Put your own middleware here, so that any problems are caught by the error
    # handling middleware underneath

    # Setup HTMLPrettifyFilter
    app = HTMLPrettifyFilter(app)

メインのテンプレートエンジンにMakoを使っていたので最初はMakoのフィルタで何とかしようとしていたのだけど、同僚のSさんからミドルウェアで実現するというアイデアが出たのでそちらを採用した。