Django – DTL – for

基本形

文法

forタグで始め、endforタグで終える。forタグの書き方はPythonのfor文と同じ。

コレクションに対する操作の殆どはPythonと同じ。

リスト

リストの内容を順次取り出す例。

メダル

  1. Gold medal
  2. Silver medal
  3. Bronze medal

 

アンパック

サイコロ: (1, 3) (3, 3) (4, 2)

辞書

辞書のキーと値を取り出す例。Pythonと同じで.itemsを付ける。

首都

  • Country: Japan – Capital: Tokyo
  • Country: France – Capital: Paris
  • Country: US – Capital: WDC

注意点

for ... inの後には関数やリテラルは書けず、rangezipenumerateはエラーになる。ただしリテラルは書けないが、view関数内で変数に代入しておけば実行可能。以下はrangeの例。

zipenumerateについても、view関数側で変数に代入しておけば使える。なおenumerateについては、forloop変数にカウンターが用意されている。

empty~変数が空の場合

{% empty %}タグは{% for %}~{% endfor %}の間に入れる。forで使う変数が空の場合にループを実行せず、empty以下が実行されてループを終わる。

変数の内容が以下の場合にemptyブロックが実行される。

  • 未定義
  • None
  • []
  • ()
  • ''

reversed~逆順

forタグにreversedを付すと、cの内容が逆順でeに取り出される。

forloop変数

一覧

forloop変数によって、ループ中でカウンター値やループの先頭・末尾データなどを得ることができる。

forloop.counter ループカウンター値(初期値:1)
forloop.counter0 ループカウンター値(初期値:0)
forloop.revcounter 逆順カウンター値(終了値:1)
forloop.revcounter0 逆順カウンター値(終了置:0)
forloop.first 最初のループならTrue
forloop.last 最後のループならTrue
forloop.parentloop 多重ループの外側の値

カウンター

以下はrevcounter0の例。

countdown

  • 3-three
  • 2-two
  • 1-one
  • 0-zero!

first/last~最初/最後のループ判定

forloop.firstforloop.lastは最初や末尾のループだけ別の処理をさせたいときに便利。

first and last

<1, 2, 3, 4>

この例では、最初の要素の前に'<'を出力し、最後の要素の後ろにカンマを付けずに'>'を出力する。

parentloop~親ループ

foroop.parentloopは言わば「親ループの~」という意味で、この後にcounterfirstなどを付けて親ループの値を参照する。たとえば、

  • forloop.parentloop.counter:親ループの現在のカウンター値
  • forloop.parentloop.first:親ループが現在最初のループ中ならTrue

たとえば以下の例では、二重ループを回しながら、一番最初の行の先頭要素の前と一番最後の行の末尾要素の後に別の文字を出力させている。

parentloop

< 1-1 1-2 1-3
2-1 2-2 2-3
3-1 3-2 3-3 >

 

 

コメントを残す

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