0
0

JinjaのEnvironmentは undefined=StrictUndefined とするのがオススメ

Posted at

はじめに

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 のススメ

なので Environmentundefined=StrictUndefined を渡しておくのがオススメです。

import jinja2
e = jinja2.Environment(undefined=jinja2.StrictUndefined)
t = e.from_string('私の名前は {{nmae}} です。') # タイポ!
s = t.render( { 'name': 'ジョンスミス' } )
# UndefinedError: 'nmae' is undefined

例外が出て、一発で気づけます。
未定義シンボルをテンプレートに書くことは通常ないと思うので、 undefined=StrictUndefined をデフォルトとしてもいいくらいだと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0