読者です 読者をやめる 読者になる 読者になる

神社参拝(3) テスト

Python Jinja

フィルターの他に「テスト」という機能があります。テストはよく使われる式に対して値を評価するために使われます。値や式をテストするには、値の後ろに"is"とテスト名を続けます。例えば、値が定義されているかどうかを調べるには、"name is defined"とすれば、"name"が定義されているか否かに応じてTrueかFalseを返します。

テストには引数を与えることも出来ます。もしテストが一つしか引数をとらないならば、引数をまとめるのに使う括弧を省略できます。例えば、次の二つの表現は、同じ動作をします:

{% if loop.index is divisibleby 3 %}
{% if loop.index is divisibleby(3) %}
http://jinja.pocoo.org/2/documentation/templates#id3

ということ。組み込みのテストは有効なケースはあるのかなぁ?という感じだが、自分で拡張できるならば、テンプレートの可読性が高まるかもしれない。

>>> from jinja2 import Template
>>> tmpl = Template("""{% if value is sameas true %}TRUE{% else %}FALSE{% endif %}""")
>>> tmpl.render(value=True)
u'TRUE'
>>> tmpl.render(value=1)
u'FALSE'
>>> tmpl.render(value=0)
u'FALSE'
>>> tmpl.render(value=False)
u'FALSE'