Python Jinja2入門 その2 Jinja2スクリプトの作成
前回に引き続き、Jinja2を使ったテキストテンプレート機能の作成方法を紹介する。
前回の記事は以下。
スクリプトの作成
まず、template.txt
という名前で以下のテンプレートテキストファイルを作成する。
こんにちは、{{name}}さん!
次に main.py
という名前で以下のスクリプトを作成する。
from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('./')) template = env.get_template('template.txt') data = { 'name': '田中' } print(template.render(data))
Pythonでmain.pyを実行すると、{{name}}部分が「田中」に置換された結果が画面に表示される。
PS> python main.py こんにちは、田中さん!
足早に説明したが、これからスクリプトを1行ずつ紐解いていく。
スクリプトの説明
1~2行目 - 宣言
1~2行目は、jinja2のPythonモジュールを使用する宣言である。
from jinja2 import Environment, FileSystemLoader
Environment
はJinja2を実行する環境を定義するクラスで、様々な基本設定を行う。FileSystemLoader
はテンプレートの読み込み方を定義するクラスで、テンプレートをテキストファイルからを読み込むことができる。
FileSystemLoader以外にも様々な読み込み方があるが、それは後日の紹介とする。
3行目 - 実行環境定義
3行目は、Jinja2の実行環境を新規作成している。
env = Environment(loader=FileSystemLoader('./'))
- 変数
env
にJinja2実行環境インスタンスを代入する。 loader
にはテンプレートの読み込み方を定義するインスタンスを設定する。FileSystemLoader('./')
は、カレントディレクトリを基準のパスとして、テンプレートファイルを探索するというインスタンスである。
4行目 - テンプレートエンジン作成
4行目は、テンプレート実行インスタンス(テンプレートエンジン)を新規作成している。
template = env.get_template('template.txt')
- 変数
template
にテンプレート実行インスタンスを代入する。 get_template('template.txt')
では、3行目に指定した場所を基準としたテンプレートファイルの名前 を指定し、テンプレート実行インスタンスを作成する。
5行目 - データモデル作成
5行目は、テンプレートに適用するデータを定義している。
data = { 'name': '田中' }
- 変数
data
に辞書を代入する。 - 辞書のキーに「name」、値に「田中」を指定しており、これはテンプレート内の変数「name」を「田中」に置き換えるという意味になる。
今回はデータをスクリプト上で作成しているが、実際にはCSVファイルにしたり、YAMLファイルにしたり、様々な方法で外部保存することが考えられる。
6行目 - テンプレート実行
6行目は、テンプレートを実行(render)している。
print(template.render(data))
template.render(data)
では、template.txt
に対してdata
を適用し、その結果を文字列として返す。
今回は説明のために画面上にprintしているが、テンプレート結果はファイルに書き込むほうが一般的だろう。
まとめ
説明は長くなってしまったが、スクリプト自体は非常に短く数分で作成できる。内容も非常に簡潔で理解しやすく、Jinja2が非常に優れたライブラリであることが分かる。
次の記事ではもう少し実用に近いサンプルを示す予定。