DjangoでテンプレートエンジンにGenshiを使うメモ(2)

先日紹介したDjangoのテンプレート機能を用いた場合、単純なGenshiのテンプレートは動作するのですが、現在のバージョン(0.5)では XIncludeがうまく動作しません。GenshiにもTemplateLoaderがあるのですが、XIncludeを行うとGenshiの TemplateLoaderから読み込もうとして、読み込めないのが原因のようです。
そこで、最初にGenshiをDjangoで使うためのコードを紹介します。紹介といっても、ドキュメント内のレシピを紹介するだけですが。

ドキュメントでは、http://genshi.edgewall.org/wiki/GenshiRecipesのUsing Genshi with Django にずばり書いてあります。リンク先はmakoとGenshiを使うためのコードが紹介されているので、これを取り込みましょう。django_genshi.pyを適当なパッケージに配置したならば、settings に GENSHI_TEMPLATE_DIRS を追加してください。尚、mako_django.pyに関しては不要です。common.pyはdjango_genshi.pyに含めてしまってもいいと思います。

使用方法はいたって簡単で、render_to_response をimportしたならば、view関数で次のように記述するだけです。

def index(request):
    return render_to_response('index.html', {head_line='Hello Genshi', messages=['A', 'B']})
)

非常にスッキリしましたね!

明日はXIncludeを使ったレイアウト機能を紹介する予定です。