私のDjangoテンプレートには、日を表示するための以下のforループがあります。ループ内で数字(以下のケースではi)を反復することが可能かどうか、私は疑問に思います。それとも、データベースに保存してからdays.day_numberの形式でクエリする必要がありますか。
{% for days in days_list %}
<h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}
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 %}
これを使うこともできます。
{% if forloop.first %}
または
{% if forloop.last %}
[現在のところ、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/