2018年6月29日金曜日

素の Python3 で jinja2 を使ってみる

概要

jinja2 はテンプレートエンジンです
Ruby でいうところの erb です
今回は Python3 で jinja2 を使ってみました

環境

  • macOS 10.13.5
  • Python 3.6.5
  • jinja2 2.10

サンプルコード

Getting Started

  • vim test_jinja2.py
from jinja2 import Template
template = Template('Hello {{ name }}!')
ret = template.render(name='John Doe')
print(ret)

ファイルから読み込み

  • python3 test_jinja2.py
from jinja2 import Template, Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader('.'))
template = env.get_template('test.tpl')
data = {'name': 'hawksnowlog', 'items': ['blog', 'twitter', 'youtube']}
disp_text = template.render(data)
print(disp_text)
  • test.tpl
String
{{ name }}
List
{% for item in items -%}
* {{ item }}
{% endfor %}

for 文の最後のマイナスは trim でこれがある場合は自動で改行しません

タグをそのまま表示

  • vim raw_jinja2.py
from jinja2 import Template, Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader('.'))
template = env.get_template('test2.tpl')
disp_text = template.render()
print(disp_text)
  • vim test2.tpl
{% raw %}
<ul>
   {% for item in seq %}
       <li>{{ item }}</li>
   {% endfor %}
</ul>
{% endraw %}

raw セクションを使います

最後に

jinja2 を Python3 から使ってみました
簡単な機能しか紹介してませんが他にも機能 (block, child template, macro) はたくさんあります

かなり強力なテンプレートエンジンなのでこれ 1 つでほとんどまかなえると思います

参考サイト

0 件のコメント:

コメントを投稿