web-dev-qa-db-ja.com

Django - テンプレートのforループで数を繰り返す

私のDjangoテンプレートには、日を表示するための以下のforループがあります。ループ内で数字(以下のケースではi)を反復することが可能かどうか、私は疑問に思います。それとも、データベースに保存してからdays.day_numberの形式でクエリする必要がありますか。

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

Djangoがそれを提供しています。どちらでも使用できます。

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

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

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

    # do your stuff
{% endfor %}

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

458
Rohan

これを使うこともできます。

{% if forloop.first %}

または

{% if forloop.last %}
56
JMJ

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

Views.pyの辞書内で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 %}

Elseifを辞書内でListを使用すると、最初と最後の反復を制御できるだけでなく、すべてのインデックスを制御できます。例:

{% 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 %}

終了する;)

//希望は、辞書、リスト、HTMLテンプレート、Forループ、内部ループ、If Elseでソリューションをカバーしたことです。 Djangoその他のメソッドのHTMLドキュメント: https://docs.djangoproject.com/en/2.2/ref/templates/builtins/

0
Mayur Raj