J'ai la boucle for suivante dans mon modèle Django affichant les jours. Je me demande s'il est possible d'itérer un nombre (dans le cas ci-dessous i) dans une boucle. Ou dois-je le stocker dans la base de données, puis l'interroger sous la forme days.day_number?
{% for days in days_list %}
<h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}
Django le fournit. Vous pouvez utiliser soit:
{{ forloop.counter }}
index commence à 1 .{{ forloop.counter0 }}
index commence à 0 .Dans le modèle, vous pouvez faire:
{% for item in item_list %}
{{ forloop.counter }} # starting index 1
{{ forloop.counter0 }} # starting index 0
# do your stuff
{% endfor %}
Plus d'informations sur: pour | balises et filtres de modèles intégrés | Django documentation
On peut aussi utiliser ceci:
{% if forloop.first %}
ou
{% if forloop.last %}
[Le modèle HTML de Django ne supporte pas les index pour le moment], mais vous pouvez atteindre l'objectif:
Si vous utilisez Dictionnaire dans Dictionnaire dans views.py, une itération est possible en utilisant la clé comme index. exemple:
{% 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 %}
Sinon, si vous utilisez la liste dans le dictionnaire, alors non seulement la première et la dernière itérations peuvent être contrôlées, mais tous les index peuvent être contrôlés. exemple:
{% 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 %}
Fin si ;)
// Hope a couvert la solution avec Dictionnaire, Liste, Modèle HTML, Boucle For, Boucle intérieure, Si ce n'est pas le cas. Django HTML Documentaion pour plus de méthodes: https://docs.djangoproject.com/en/2.2/ref/templates/builtins/