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を使ったレイアウト機能を紹介する予定です。