【django】templateの組み込みフィルタのifに代わるyesnoの使い方

djangoのテンプレートには、便利な組み込みタグやフィルタリファレンスが用意されています。

本日はそんな組み込みフィルタリファレンスのyesnoの使い方を紹介します。

環境

環境は以下になります。

環境

・macOS Big Sur

・django 2.0

・Python 3.7

・djangoのテンプレートのif文が使える

使い方

まずはいきなり使用しても理解が追いつかないと思いますので、一般的な条件分岐(if文)を利用したコードから紹介していきます。

以下のケースではcountryという変数がTrueの場合は、<li>ブラジル</li>というliタグを出力し、そうではない(False)場合は何も出力しないという結果を表示しています。

sample.html

次は、yesnoを利用した出力方法を紹介します。

上のsample.htmlと全く同じ意味の文です。

sample2.html

出力結果としてはcountryという値が呼ばれた時に、それがTrueであれば<li>ブラジル</li>を出力し、Falseであれば何も出力しないという実行結果になります。

さらに補足するとコロン(:)に入れる値の一番目がyesの時の出力を示し、二番目の値がnoの時の出力を示しています。

ヒロヤン
{% if %}を書くとどうしても冗長的なコードになってしまいがちですが、yesnoだと1文でスッキリ書くことができますね。

yesnoフィルターの発展的な使い方

例えば、class属性に特定の属性値をつけるかつけないかなどの発展的な使われ方は現場でされるのではないでしょうか。

具体的にはこんな感じです。

countryがTrueの時は、opacityという属性値をliタグにつけて、Falseの場合はnon-opacityという属性値をliタグにつけるというようなやり方です。

またTrueでもFalseでもない場合は、Noneを引数として渡すことも可能です。

参考

https://docs.djangoproject.com/ja/2.0/ref/templates/builtins/



最後に

いかがでしたでしょうか。

以上が、「【django】templateの組み込みフィルタのifに代わるyesnoの使い方」の紹介記事になります。

djangoの組み込みテンプレートタグにはこれ以外にも多く存在していますので、より効果を試して利用してみてはいかがでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です