Django-テンプレートのforループで数値を反復する


250

日を表示する私のdjangoテンプレートに次のforループがあります。ループ内で数値(以下の場合はi)を反復することが可能かどうかは疑問です。または、データベースに保存してから、days.day_numberの形式でクエリを実行する必要がありますか?

{% for days in days_list %}
    <h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}

回答:


593

Djangoが提供しています。次のいずれかを使用できます。

  • {{ forloop.counter }}インデックスは1から始まります。
  • {{ forloop.counter0 }}インデックスは0から始まります

テンプレートでは、次のことができます。

{% for item in item_list %}
    {{ forloop.counter }} # starting index 1
    {{ forloop.counter0 }} # starting index 0

    # do your stuff
{% endfor %}

詳細情報:について| 組み込みのテンプレートタグとフィルター| Djangoのドキュメント


1
しかし、それは長さ-1を与えます。
VIKAS KOHLI 2017年

2
ネストされたforループはどうですか?内部ループと外部ループのどちらをカウントするかを、djangoにどのように伝えることができますか?
Tim Woocker 2018

4
@ crey4fun、forloop.parentloop詳細については参照ドキュメントを確認してください。
Rohan

89

これを使用することもできます:

{% if forloop.first %}

または

{% if forloop.last %}

10
質問に対する答えではありませんが、この質問を検索する多くの人々に対する答えです。いい物!
kontur 2018

1

[Django HTMLテンプレートは現時点ではインデックスをサポートしていません]が、次の目標を達成できます。

views.pyのDictionary内でDictionary を使用する場合、インデックスとしてキーを使用して反復が可能です。例:

{% for key, value in DictionartResult.items %} <!-- dictionartResult is a dictionary having key value pair-->
<tr align="center">
    <td  bgcolor="Blue"><a href={{value.ProjectName}}><b>{{value.ProjectName}}</b></a></td>
    <td> {{ value.atIndex0 }} </td>         <!-- atIndex0 is a key which will have its value , you can treat this key as index to resolve-->
    <td> {{ value.atIndex4 }} </td>
    <td> {{ value.atIndex2 }} </td>
</tr>
{% endfor %}

それ以外の場合、辞書内でリストを使用すると、最初と最後の反復を制御できるだけでなく、すべてのインデックスを制御できます。例:

{% for key, value in DictionaryResult.items %}
    <tr align="center">
    {% for project_data in value %}
        {% if  forloop.counter <= 13 %}  <!-- Here you can control the iteration-->
            {% if forloop.first %}
                <td bgcolor="Blue"><a href={{project_data}}><b> {{ project_data }} </b></a></td> <!-- it will always refer to project_data[0]-->
            {% else %}
                <td> {{ project_data }} </td> <!-- it will refer to all items in project_data[] except at index [0]-->
            {% endif %}
            {% endif %}
    {% endfor %}
    </tr>
{% endfor %}

End If;)

//ソリューションが辞書、リスト、HTMLテンプレート、Forループ、Innerループ、If Elseでカバーされていることを願っています。Django HTML Documentaion for more methods:https : //docs.djangoproject.com/en/2.2/ref/templates/builtins/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.