pythonでテンプレートエンジンを利用する

pythonでテンプレートエンジンを利用する

バッテリー同梱のpythonはテンプレートエンジンも標準に組み込まれている。
下記の通り利用することができる。

[cc lang=”python”]
import string
t = string.Template(‘Hello ${name}!’)
t.substitute({‘name’: ‘Python’})
[/cc]

しかし、このテンプレートはとてもシンプルな変換しかできない。
単純なキーワード置換のみ。

そこで簡単に導入できて、ループや条件分岐ができるテンプレートを利用する。

bottle

https://bottlepy.org/docs/dev/

テンプレートエンジンは、bottleの一部の機能。
それでも、十分に高性能なテンプレートが利用できる。

インラインで変換

[cc lang=”python”]
import bottle
bottle.template(”’
{{ msg }}
% for item in items:
{{ item[‘no’] }} : {{ item[‘name’] }}
% end
”’, {
‘msg’: ‘test bottle’,
‘items’: (
{‘no’: ‘1’, ‘name’: ‘AAA’},
{‘no’: ‘2’, ‘name’: ‘BBB’},
)
})
[/cc]

ファイルのテンプレートを読んで、ファイルに出力する

template.tmpl
[cc lang=”text”]
{{ msg }}
% for item in items:
{{ item[‘no’] }} : {{ item[‘name’] }}
% end
[/cc]

[cc lang=”python”]
import bottle
import codecs
data = {}
with codecs.open(‘output.txt’, ‘w’, ‘utf-8’) as w:
with codecs.open(‘template.tmpl’, ‘r’, ‘utf-8’) as r:
w.write(bottle.template(r.read(), data))

[/cc]

まとめ

bottleを使うと、一般的なテンプレート機能が使える。
bottleは%の行の変換が適切に行われるので、メールなどのテキストテンプレートに問題なく使える(テンプレートエンジンによっては、余分な改行やスペースが入ってしまったりする)。
また、テンプレートエンジンはbottleの一つの機能でしかなく、もっといろいろなことができる。
スタンドアロンサーバになったりするようだ。
これらも活用できれば、ツールの幅がぐっと広がりそうだ。

同じタグの記事
同じカテゴリの記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA