Python Tech

Jinjaテンプレートで if 変数 is None 条件式を記述する方法 [Python]

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_aNone かどうかを検証したいときは次のように書きます。

{% if var_a is none %}
...
{% endif %}

 

この文は、『var_anone() というテストメソッドで評価する(Noneかどうか検証する)』という意味になります。

使えるテストメソッドはドキュメントで列挙されています。例えば、変数が定義されているかどうかを調べる defined()is False を書き換える false() などはよく使うでしょう。

 

今回参考にしたページ・資料

Template Designer Documentation — Jinja Documentation (3.0.x)

 

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。多くの人に役立つ情報のシェアが目標です。

人気の記事

1

会社員でプログラマーとして働いている人、インフラやネットワークのエンジニアとして働いている人の中には、フリーランスのプログラマーとして独立、もしくは転向したい人もいるので ...

2

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるよう ...

3

フリーランスのプログラマーにとって収入の向上に最も直結するのはスキルです。 必要なスキル、スキルの獲得方法が気になる人も多いでしょう。 また、これからフリーランスを目指す ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのス ...

5

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 ...

-Python, Tech
-, ,