【Python】テンプレートエンジンjinja2を使ってみる
2012-02-16 00:59:13 Thu
■jinja2を使ってみる
pythonでテンプレートエンジン、というといくつもあるみたいです。
http://labs.unoh.net/2007/05/python_1.html
http://d.hatena.ne.jp/ymotongpoo/20101213/1292252414
- Cheetah
- Mako
- Jinja2
- Django
- Kid
- Genshi
- Clearsilver
- Nevow
- SimpleTAL
- Chameleon
- web2py
- Tornado
- Bottle
で、大御所がおすすめされていたのでjinja2を使ってみました。
■とりあえず動かす
ひとまず動かしてみます。
easy_install jinja2 でライブラリをインストールしておきます。
from jinja2.environment import Environment
from jinja2.loaders import FileSystemLoader
env = Environment(loader=FileSystemLoader('../templates/'))
template = env.get_template('template.txt')
data_maps = {'name':'jinja'}
file = open('../dest/test.txt', 'w+')
file.write(template.render(data_maps))
templatesディレクトリにある「template.txt」ファイルを元にして
destディレクトリに「test.txt」ファイルを出力します。
Loaderには色々あるようで、場面に合わせて最適なローダーを使うようにします。
http://www.geocities.jp/showa_yojyo/note/python-jinja2.html#environment
今回は「FileSystemLoader」を使ってます。
テンプレートには「name='jinja', hoge='fuga'...」で値を渡します。
dictionaryだと楽かもですね。
出力 : {{name}}
条件分岐 :
{% if name != '' %}
{{name}}
{% else %}
空でした
{% endif %}
繰り返し :
{% for item in items %}
{{ loop.index0 }}
{% endfor %}
ざっとでした。
参考URL
http://ymotongpoo.appspot.com/jinja2_ja/api.html
http://www.geocities.jp/showa_yojyo/note/python-jinja2.html
http://nayuta.info/archives/67
http://www.gesource.jp/weblog/?p=3527