テンプレートエンジンのJinjaを使ってみる

テンプレートエンジンには、なんでおもしろい名前を付けられるんだろうか。Makoも日本語の「マコ」を想像させ、身近な感じがしておもしろかったが、今度はそのものズバリ、Jinja。これって「神社」なんです。

ドキュメントを日本語に翻訳しているサイトがあって、FAQに理由が書かれていた

なぜJinjaというの?

Jinjaという名前は日本の「神社 (temple)」に由来します。そして temple と template の発音が似ていることからその名前を採用しました。ウガンダの首都にちなんだものではありません。

名前はユニークですが、使い方は簡単そうです。まあ、自分が使う場面は簡単なものばかりなんですが。

実験環境

  • Ubuntu 10.04LTS
  • Python 2.6.5

インストール

$ sudo easy_install Jinja2

Jinja2-2.6がインストールされました。

簡単な使用例

スクリプトと同じディレクトリに、テンプレートファイル test.tmpl を置き、HTMLファイルを作ってみます。

スクリプト
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader('./', encoding='utf8'))
tmpl = env.get_template('test.tmpl')
html = tmpl.render(name=u"オバマ大統領")
print html
テンプレートファイル test.tmpl
<html>
<body>
  <p>こんにちわ, {{ name }}</p>
</body>
</html>
スクリプトを実行すると、テンプレートの{{ name }}が「オバマ大統領」に置き換えられたHTMLが出力されます
<html>
<body>
  <p>こんにちわ, オバマ大統領</p>
</body>
</html>

テンプレートにnameを渡すんですが、文字列の文字コードをunicodeにしないとテンプレート処理でエラーが発生します。もうちょっと、いろいろと使って試したいと思います。

参考

【送料無料】初めてのPython第3版

【送料無料】初めてのPython第3版
価格:4,830円(税込、送料別)

Pythonjinja

Posted by skw