Django {% si forloop.premier %} question
J'ai le code suivant dans mon template:
{% for object in object_list %}
{% with game=object.game %}
{% for category in object.game.objectmeta.categories.all %}
{% if category.name|title == 'Puzzle' %}
{% if forloop.first %}
<div class='side_header' id='dark_gamelink_side'>
<a class='actionheader' href=""></a>
</div>
{% endif %}
<div class='game_link' id='dark_gamelink'>
<a class='img_link' href="{% url game_view game.id game.title|slugify %}">
<img class='game_img' src='{{game|thumb:"78x65"}}' alt='{{game.title}}' />
</a>
<div class='top_game_title' style='padding:0'>
<a style='position:relative; top:-3px' id='yellowlink' href="{% url game_view game.id game.title|slugify %}">{{game.title}} -- {{category.name|title}}</a>
<img style='position:relative; top:1px; margin-left:12px' src='thumbsup.gif' width='17' height='18'/>
<span style='position:relative; top:-3px; font-size:10px; color:white'>99%</span>
</div>
{% if game.description|length > 65 %}
{{ game.description|slice:"65" }}...
{% else %}
{{ game.description }}
{% endif %}
</div>
{% if forloop.counter0 == 3 %}
<div class='more_games'><br/></div><div class='side_header' id='dark_gamelink_side'><a class='adventureheader' href=adventure.htm></a></div>
{% endif %}
{% endif %}
{%endfor%}
{% endwith %}
{% endfor %}
Maintenant, je suis en utilisant ceci:
{% if forloop.first %}
<div class='side_header' id='dark_gamelink_side'>
<a class='actionheader' href=""></a>
</div>
{% endif %}
pour essayer de détecter si c'est la première itération de la boucle for qui précède immédiatement-il pas le parent forloop. En d'autres termes, je suis en train d'essayer de détecter si c'est la 1ère itération de cette boucle for:
{% for category in object.game.objectmeta.categories.all %}
pas celui-ci:
{% for object in object_list %}
La façon dont il est aujourd'hui n'est pas de travail parce qu'il affiche ceci:
<div class='side_header' id='dark_gamelink_side'>
<a class='actionheader' href=""></a>
</div>
Deux fois. Comment détecter la première itération de la imbriquée forloop?
OriginalL'auteur Jim | 2011-05-29
Vous devez vous connecter pour publier un commentaire.
Édité:
Je n'ai jamais utilisé ces variables, mais je pense que
forloop.parentloop.first
devrait le faire. Si pas de me blâmer d'avoir mal compris le Django docs. 😉Vous devriez vérifier si vous êtes dans la parentloop et puis dans le premier nœud imbriqué. S'il vous plaît essayer ce modèle modifié. Il devrait vous donner la bonne direction.
à mon avis (j'ai édité ma réponse) contrôle de la
parentloop
devrait résoudre votre problème.OriginalL'auteur jazz
Je pense que la meilleure façon de résoudre ce n'est pas à détecter si c'est la première itération de la boucle, mais plutôt à écrire votre code HTML de sorte que c'est à l'extérieur de la boucle entièrement.
Vous ne doit être écrit les éléments HTML pour la boucle que vous voulez réellement répété pour chaque itération. Si cela ne fonctionne pas, de repenser la façon dont vous êtes en fournissant les données de votre point de vue (object_list, de jeu, de la catégorie, etc), de sorte que vous pouvez écrire votre balisage plus facilement.
Le début de votre point de vue sera probablement ressembler à quelque chose comme ceci:
OriginalL'auteur tjarratt