【Django】forタグ:ループの開始位置・終了位置・回数制限を指定(sliceフィルタ)
2022.01.10 /

本記事ではPythonのWebフレームワークDjangoにおける、forタグによるループの開始位置・終了位置・回数制限について解説していきます。
sliceフィルターをforタグに使用することでリストからループを回す際に、ループをコントロールすることができます。
本記事を通してテンプレート内でのループのコントロール方法を学んでください。
Djangoにおけるテンプレートについて詳しくは以下記事をご参照ください。

【django】テンプレートとは:使用方法(templatesフォルダ・変数・タグ )
テンプレート:タグとは
テンプレートでは繰り返しや条件分岐、テンプレートの継承といったロジックな処理を行うことができます。これら機能はタグを使うことで利用できます。
タグにはループ(繰り返し)を提供するforタグや、条件による分岐処理を提供するifタグなど多くのタグが存在します。
タグについて詳しくは以下記事をご参照ください。

【Django】テンプレート:タグとは(タグ一覧・使い方)
テンプレート:フィルターとは
テンプレートではviews.pyからコンテキストと呼ばれる変数と値がマッピングされたオブジェクトが渡されます。
テンプレートのフィルターは、このviews.pyから受け取った変数(コンテキスト)を加工する仕組みです。
変数の文字列長を表示するフィルターや、指定した日時にフォーマットするフィルター、改行文字をHTMLのbrタグに変換するフィルターなど多種多様です。
フィルターについて詳しくは以下記事をご参照ください。

【Django】テンプレート:フィルターの一覧(使用方法、書き方)
forタグとsliceフィルター
最も多く利用されるタグの一つにforタグがあります。forタグはループ(繰り返し)機能を提供します。
このforタグにsliceフィルターを組み合わせることで、リストからループを回す際にループをコントロールすることができるようになります。
{% for value in values | slice: "start:end" %}
forタグとsliceフィルターで以下のことが実現できます。
- ループの開始位置を指定
- ループの終了位置を指定
- ループの開始・終了位置を指定
ループの開始位置を指定
リストからループを回す際、リストの開始位置を指定したい場合は次のように記述します。
{% for value in values | slice: "3:" %}
上記はリストvaluesのインデックス3からループを行っています。
このように記述することでループの開始位置を指定できます。
ループの終了位置を指定(ループ回数制限の指定)
リストからループを回す際、リストの終了位置を指定したい場合は次のように記述します。
{% for value in values | slice: ":5" %}
上記はリストvaluesのインデックス4までループを回します。
このように記述することでループの終了位置を指定できます。またこれはループを回す回数を制限できることも意味します。
ループの開始・終了位置を指定
sliceフィルターでは開始位置と終了位置の両方を指定することができます。
{% for value in values | slice: "3:5" %}
上記はリストvaluesのインデックス3からインデックス4までループを回します。
まとめ
本記事「【Django】forタグ:ループの開始位置・終了位置・回数制限を指定(sliceフィルタ)」はいかがでしたか。
forによるループはsliceフィルターでコントロールできることを覚えて、作成しているWebアプリケーションでぜひ利用してください。