はじめに
JinjaはPythonで使える強力なテンプレートエンジンです。
たとえば、下記のように使うことができます。
import jinja2
e = jinja2.Environment()
t = e.from_string('私の名前は {{name}} です。')
s = t.render( { 'name': 'ジョンスミス' } )
print(s) # 私の名前は ジョンスミス です。
動機
テンプレートを書いてるときのタイポ、あると思います。
しかし、通常だとJinjaは未定義シンボルを空値として扱うだけです。
import jinja2
e = jinja2.Environment()
t = e.from_string('私の名前は {{nmae}} です。') # タイポ!
s = t.render( { 'name': 'ジョンスミス' } )
print(s) # 私の名前は です。
テンプレートが短ければミスは明らかですが、長くなるとそうはいきません。
undefined=StrictUndefined のススメ
なので Environment
に undefined=StrictUndefined
を渡しておくのがオススメです。
import jinja2
e = jinja2.Environment(undefined=jinja2.StrictUndefined)
t = e.from_string('私の名前は {{nmae}} です。') # タイポ!
s = t.render( { 'name': 'ジョンスミス' } )
# UndefinedError: 'nmae' is undefined
例外が出て、一発で気づけます。
未定義シンボルをテンプレートに書くことは通常ないと思うので、 undefined=StrictUndefined
をデフォルトとしてもいいくらいだと思います。