JinjaはWebサーバーなどで使用されるマークアップテンプレートエンジンのPythonのライブラリです。
非常に軽い動作にもかかわらず、Python使いなら直感的に書きやすい仕様を持っているエンジンでもあります。
今回はそんな直感に反する事例をひとつ解説しています。
結論
None
ではなく、none
を使う。
{% if var_a is none %} {# noneはすべて小文字#}
...
{% endif %}
Pythonのスキルを使って毎月の収入源を増やすのが最適なんじゃないかという件
実際、今のスキルに合わせて仕事を獲得し、スキマ時間で毎月+5、+20、+70万円くらいの人が多いです。
必要なスキル、仕事の獲得までの流れは以下の記事で徹底解説しています。
(もちろん全部無料です)
空いた時間にぜひ参考にしてみてください。
実行環境
- Python 3.9.6
- Jinja2==3.0.1
Jinjaの if(文)
None
でなく、かつFalse
でもない変数かどうかを評価するにはシンプルに次のように書く。pythonと同様です。
{% if var_a %}
....
{% endif %}
Jinjaの is 式
Pythonで何気なく使っている if A is B:
という条件式があると思いますが、Jinjaの世界の is
はただの演算子というより test (テスト)を実行するオペレーターの役割を果たします。
is
の後に書く表現は test のメソッド名になります。そのため次の文はエラーになります。
{% if var_a is None %}
...
{% endif %}
このようにPythonの is
演算子と同じ使い方をしても、 "None()" というテストは無いのでエラーとなります。
本気で var_a
が None
かどうかを検証したいときは次のように書きます。
{% if var_a is none %}
...
{% endif %}
この文は、『var_a
を none()
というテストメソッドで評価する(Noneかどうか検証する)』という意味になります。
使えるテストメソッドはドキュメントで列挙されています。例えば、変数が定義されているかどうかを調べる defined()
や is False
を書き換える false()
などはよく使うでしょう。
今回参考にしたページ・資料
Template Designer Documentation — Jinja Documentation (3.0.x)