01-タグ用
Django テンプレートでは、for
タグはループの反復に使用される重要なタグです。その構文は Python の for
ループに似ていますが、Django テンプレートでは特別な使用法がいくつかあります。以下に、Django テンプレート タグfor
の詳細を示します。
基本的な文法
{% for item in items %}
{# 循环体 #}
{
{ item }}
{% endfor %}
{% for item in items %}
: ループを開始します。item
はループ変数、items
はループによって反復されるデータです。{# 循环体 #}
: ループ本体内で実行されるテンプレート コード。{ { item }}
:ループ変数の値を表示します。{% endfor %}
: ループを終了します。
注:items
は反復可能オブジェクトであり、この反復可能オブジェクトはビュー関数で生成されている必要があり、テンプレートで再度生成することはできません。つまり、次の記述方法は正しいです。
{% for line_number in context1.page_range_pc %}
<p>第{
{ line_number }}行</p>
{% endfor %}
しかし、それを書く方法は次のとおりです。
{% for line_number in range(context1.page_range) %}
<p>第{
{ line_number + 1 }}行</p>
{% endfor %}
それは間違いです。つまり、 range() 関数を for template タグ内で使用することはできません。
ループ変数と空変数
Django テンプレートでは、for
ループにより、ループ本体内で使用できるループ変数が作成されます。ループ データが空の場合は、 empty
キーワードを使用して処理できます。
{% for item in items %}
{
{ item }}
{% empty %}
<p>No items available.</p>
{% endfor %}
ループタグ内のフィルター
for
ループでフィルタを使用してデータを処理できます。
{% for item in items|filter:"search_query" %}
{
{ item }}
{% endfor %}
ループ内のカウンター
現在のループのインデックスまたはカウントを取得する必要がある場合は、forloop
オブジェクトを使用できます。
{% for item in items %}
{
{ forloop.counter }}: {
{ item }}
{% endfor %}
forloop.counter
: 現在のループのカウンター (1 から始まります)。forloop.counter0
: 0 から始まる現在のループのカウンター。
ループ内のその他のプロパティ
forloop
オブジェクトには、現在の要素がループ内の最初の要素であるかどうかを示す forloop.first
、現在の要素であるかどうかを示す forloop.last
など、他の属性もあります。要素はループ内にあります 最後の要素。
{% for item in items %}
{% if forloop.first %}
First: {
{ item }}
{% elif forloop.last %}
Last: {
{ item }}
{% else %}
{
{ item }}
{% endif %}
{% endfor %}
入れ子になったループ
Django テンプレートはループのネストをサポートしています。1 つのfor
ループを別のループ内にネストできます。
{% for category in categories %}
<h2>{
{ category.name }}</h2>
<ul>
{% for item in category.items %}
<li>{
{ item.name }}</li>
{% endfor %}
</ul>
{% endfor %}
これらは、Django テンプレートでの for
タグの基本的な使用法です。特定のニーズに応じて、他のテンプレート タグとフィルタを組み合わせて、より複雑なロジックを実装できます。