J'ai 10 listes de même longueur (20) avec des données chaînées signifiant que A [0] est une image pour B [0] et C [0] mais pour le plus petit exemple reproductible j'ai 3

A=[image1, image2, image3, image4, image5, image6]
B=[title1, title2, title3, title4, title5, title6]
C=[name1, name2, name3, name4, name5 ,name6]

J'ai besoin de les afficher dans les modèles Django comme ceci:

<div class="row">
        <div class="col-4">
            <div class="image">
                image1
            </div>
            <div class="title">
                title1
            </div>
            <div class="name">
                name1
            </div>
        </div>
        <div class="col-4">
            <div class="image">
                image2
            </div>
            <div class="title">
                title2
            </div>
            <div class="name">
                name2
            </div>
        </div>
        <div class="col-4">
            <div class="image">
                image3
            </div>
            <div class="title">
                title3
            </div>
            <div class="name">
                name3
            </div>
        </div>
    </div>

Et après cette ligne, la suivante sera générée avec le reste des valeurs

Comment puis-je faire cela

-1
Marcel Czuryszkiewcz 31 août 2020 à 10:47

2 réponses

Meilleure réponse

Utilisez zip

Ex:

def yorufunc(request):
    A=[image1, image2, image3, image4, image5, image6]
    B=[title1, title2, title3, title4, title5, title6]
    C=[name1, name2, name3, name4, name5 ,name6]
         
    context = {"data": zip(A, B, C)}
    return render(request, 'yorufunc.html', context)

Dans le modèle

<div class="row">
    {% for i, t, n in data %}
        <div class="col-4">
            <div class="image">
                {{ i }}
            </div>
            <div class="title">
                {{ t }}
            </div>
            <div class="name">
                {{ n }}
            </div>
        </div>
    {% endfor %}
</div>
3
Rakesh 31 août 2020 à 07:53

Une autre façon serait, en utilisant les balises de modèle d'index

Dans le dossier de votre application, créez un dossier nommé templatetags

Il crée un fichier index.py:

from django import template
register = template.Library()

@register.filter
def index(indexable, idx):
    return indexable[idx]

Maintenant, il est préférable de redémarrer votre serveur une fois.

Puis en html faire:

{% load index %}

<div class="row">
    {% for x in A %}
        <div class="col-4">
            <div class="image">
                {{x}}
            </div>
            <div class="title">
                {{ B|index:forloop.counter0 }}
            </div>
            <div class="name">
                {{ C|index:forloop.counter0 }}
            </div>
        </div>
    {% endfor %}
</div>
0
zero 31 août 2020 à 09:17