Как выполнить итерацию 3 вложенных списков в шаблоне django

У меня есть 3 списка в моих представлениях, и я хочу итерировать их с помощью django шаблон с вложенностью. Например: здесь у меня есть 3 списка card_postings, arrays и post_content

 card_postings = ['Indicatif', 'Subjonctif', 'Conditionnel',
    'Participe', 'Impératif', 'Infinitif']

    arrays = [['Présent', 'Imparfait', 'Futur', 'Passé simple', 'Passé
    composé', 'Plus-que-parfait', 'Passé antérieur', 'Futur antérieur'],
    ['Présent', 'Imparfait', 'Plus-que-parfait', 'Passé'], ['Présent',
    'Passé première forme', 'Passé deuxième forme'], ['Présent', 'Passé
    composé', 'Passé'], ['Présent', 'Passé'], ['Présent', 'Passé']]

    post_content = [["j'ai", 'tu as', 'il/elle a', 'nous avons', 'vous
    avez', 'ils/elles ont'], ["j'avais", 'tu avais', 'il/elle avait', 'nous
    avions', 'vous aviez', 'ils/elles avaient'], ["j'aurai", 'tu auras',
    'il/elle aura', 'nous aurons', 'vous aurez', 'ils/elles auront'],
    ["j'eus", 'tu eus', 'il/elle eut', 'nous eûmes', 'vous eûtes',
    'ils/elles eurent'], ["j'ai eu", 'tu as eu', 'il/elle a eu', 'nous
    avons eu', 'vous avez eu', 'ils/elles ont eu'], ["j'avais eu", 'tu
    avais eu', 'il/elle avait eu', 'nous avions eu', 'vous aviez eu',
    'ils/elles avaient eu'], ["j'eus eu", 'tu eus eu', 'il/elle eut eu',
    'nous eûmes eu', 'vous eûtes eu', 'ils/elles eurent eu'], ["j'aurai
    eu", 'tu auras eu', 'il/elle aura eu', 'nous aurons eu', 'vous aurez
    eu', 'ils/elles auront eu'], ["que j'aie", 'que tu aies', "qu'il/elle
    ait", 'que nous ayons', 'que vous ayez', "qu'ils/elles aient"], ["que
    j'eusse", 'que tu eusses', "qu'il/elle eût", 'que nous eussions', 'que
    vous eussiez', "qu'ils/elles eussent"], ["que j'eusse eu", 'que tu
    eusses eu', "qu'il/elle eût eu", 'que nous eussions eu', 'que vous
    eussiez eu', "qu'ils/elles eussent eu"], ["que j'aie eu", 'que tu aies
    eu', "qu'il/elle ait eu", 'que nous ayons eu', 'que vous ayez eu',
    "qu'ils/elles aient eu"], ["j'aurais", 'tu aurais', 'il/elle aurait',
    'nous aurions', 'vous auriez', 'ils/elles auraient'], ["j'aurais eu",
    'tu aurais eu', 'il/elle aurait eu', 'nous aurions eu', 'vous auriez
    eu', 'ils/elles auraient eu'], ["j'eusse eu", 'tu eusses eu', 'il/elle
    eût eu', 'nous eussions eu', 'vous eussiez eu', 'ils/elles eussent
    eu'], ['ayant'], ['ayant eu'], ['masc.sg.: eu', 'masc.pl.: eus',
    'fém.sg.: eue', 'fém.pl.: eues'], ['aie', 'ayons', 'ayez'], ['aie eu',
    'ayons eu', 'ayez eu'], ['avoir'], ['avoir eu']]

Здесь каждая 'card_postings' имеет связанные 'arrays', а каждый 'arrays' ассоциированный 'post_content'.

изображение страницы структура страницы то, что я хочу

А также я попробовал это с zip-списком

zipped_lists = zip(card_postings, arrays, post_content)

В моем шаблоне это выглядит следующим образом

 {% for card,posts,contents in zipped_lists %}
            <div class="card">
                <div class="card-body">
                    <h4 class="text-center">{{ card }}</h4>
                    <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
                      {% for post in posts %} 
                        <div class="col">
                        <div class="card">
                            <div class="card-header text-center text-primary">
                              <h5>{{ post }}</h5>
                            </div>
                            <ul class="list-group list-group-flush">
                              <li class="list-group-item border-0">
                                {% for subj in contents %}
                                <i>{{subj}} <br> </i> 
                                {% endfor %}
                              </li>
                            </ul>
                          </div>
                        </div>
                        {% endfor %}
                    </div>
                </div>
            </div>
      {% endfor %}
    </div>

Есть ли лучший способ сделать эту вещь, пожалуйста, дайте мне знать Мне нравятся ваши предложения, а также. Есть похожие вопросы, такие как здесь, здесь, здесь, здесь, но ни один из них не помогает моему вопросу. И также если вам нужна дополнительная информация, пожалуйста, дайте мне знать

Для ответа на этот вопрос рассмотрим следующий пример. У меня есть тема под названием "Свежие новости", "Последние новости", которая имеет подтемы под названием "Из Индии", "Из США" и так далее. В каждой подтеме есть множество статей. Древовидная структура для вышеупомянутого выглядит следующим образом

Times_of_India = {
Breaking News : 
{ 
"From India": [article1, article2, article3],
"From USA": [article1, article2, article3],
"From China": [article1, article2, article3]
}
Latest News:
{ 
"From India": [article1, article2, article3],
"From USA": [article1, article2, article3],
"From China": [article1, article2, article3]
}
}
}

Допустим, я хочу отображать свежие новости в левой части страницы и последние новости в правой части страницы, а под обоими разделами новостей просто отображать новости. Для этого подход будет следующим

for key, value in Times_of_India.items()
 <card>key</card>
   if isinstance(value, dict):
    for k, v in value.items():
      <posts>k</posts>
       if isinstance(v, list):
         for d in v:
           <li>d</li>

Пояснение: Breaking_news - это ваши карточки, Location - ваши массивы, а articles list - содержимое вашего поста. Приведенный выше код не проверяет наличие какой-либо ассоциации, просто отображает все, что есть. У вас может быть условие проверки.

Примечание: Я удалил концепцию трех списков и сделал словари, которые имеют ключ и значение, и я могу использовать ключи как мои ассоциации.

Надеюсь, это поможет, если нет, не стесняйтесь спрашивать.

Я написал код на python с теми же списками примеров, и он выдает следующий результат, как вы ожидаете, без использования isinstance. Взгляните Та же логика может быть легко реализована и в шаблоне django.

card_postings = ['Indicatif', 'Subjonctif', 'Conditionnel',
    'Participe', 'Impératif', 'Infinitif']

arrays = [
    ['Présent', 'Imparfait', 'Futur', 'Passé simple', 'Passé composé', 'Plus-que-parfait', 'Passé antérieur', 'Futur antérieur'],
    ['Présent', 'Imparfait', 'Plus-que-parfait', 'Passé'],
    ['Présent','Passé première forme', 'Passé deuxième forme'],
    ['Présent', 'Passécomposé', 'Passé'],
    ['Présent', 'Passé'],
    ['Présent', 'Passé']
]

post_content = [
    ["j'ai", 'tu as', 'il/elle a', 'nous avons', 'vousavez', 'ils/elles ont'],
    ["j'avais", 'tu avais', 'il/elle avait', 'nousavions', 'vous aviez', 'ils/elles avaient'],
    ["j'aurai", 'tu auras','il/elle aura', 'nous aurons', 'vous aurez', 'ils/elles auront'],
    ["j'eus", 'tu eus', 'il/elle eut', 'nous eûmes', 'vous eûtes','ils/elles eurent'],
    ["j'ai eu", 'tu as eu', 'il/elle a eu', 'nousavons eu', 'vous avez eu', 'ils/elles ont eu'],
    ["j'avais eu", 'tuavais eu', 'il/elle avait eu', 'nous avions eu', 'vous aviez eu','ils/elles avaient eu'],
    ["j'eus eu", 'tu eus eu', 'il/elle eut eu','nous eûmes eu', 'vous eûtes eu', 'ils/elles eurent eu'],
    ["j'auraieu", 'tu auras eu', 'il/elle aura eu', 'nous aurons eu', 'vous aurezeu', 'ils/elles auront eu'],
    ["que j'aie", 'que tu aies', "qu'il/elleait", 'que nous ayons', 'que vous ayez', "qu'ils/elles aient"],
    ["quej'eusse", 'que tu eusses', "qu'il/elle eût", 'que nous eussions', 'quevous eussiez', "qu'ils/elles eussent"],
    ["que j'eusse eu", 'que tueusses eu', "qu'il/elle eût eu", 'que nous eussions eu', 'que vouseussiez eu', "qu'ils/elles eussent eu"],
    ["que j'aie eu", 'que tu aieseu', "qu'il/elle ait eu", 'que nous ayons eu', 'que vous ayez eu',"qu'ils/elles aient eu"],
    ["j'aurais", 'tu aurais', 'il/elle aurait','nous aurions', 'vous auriez', 'ils/elles auraient'],
    ["j'aurais eu",'tu aurais eu', 'il/elle aurait eu', 'nous aurions eu', 'vous auriezeu', 'ils/elles auraient eu'],
    ["j'eusse eu", 'tu eusses eu', 'il/elleeût eu', 'nous eussions eu', 'vous eussiez eu', 'ils/elles eussenteu'],
    ['ayant'],
    ['ayant eu'],
    ['masc.sg.: eu', 'masc.pl.: eus','fém.sg.: eue', 'fém.pl.: eues'],
    ['aie', 'ayons', 'ayez'],
    ['aie eu','ayons eu', 'ayez eu'],
    ['avoir'],
    ['avoir eu']
]

for index, card in enumerate(card_postings):
    print(card)
    for i, array in enumerate(arrays[index]):
        print("\t", array)
        print("\t\t", post_content[i])
    del post_content[0:len(arrays[index])]

Вывод выглядит следующим образом:

Indicatif
     Présent
         ["j'ai", 'tu as', 'il/elle a', 'nous avons', 'vousavez', 'ils/elles ont']
     Imparfait
         ["j'avais", 'tu avais', 'il/elle avait', 'nousavions', 'vous aviez', 'ils/elles avaient']
     Futur
         ["j'aurai", 'tu auras', 'il/elle aura', 'nous aurons', 'vous aurez', 'ils/elles auront']
     Passé simple
         ["j'eus", 'tu eus', 'il/elle eut', 'nous eûmes', 'vous eûtes', 'ils/elles eurent']
     Passé composé
         ["j'ai eu", 'tu as eu', 'il/elle a eu', 'nousavons eu', 'vous avez eu', 'ils/elles ont eu']
     Plus-que-parfait
         ["j'avais eu", 'tuavais eu', 'il/elle avait eu', 'nous avions eu', 'vous aviez eu', 'ils/elles avaient eu']
     Passé antérieur
         ["j'eus eu", 'tu eus eu', 'il/elle eut eu', 'nous eûmes eu', 'vous eûtes eu', 'ils/elles eurent eu']
     Futur antérieur
         ["j'auraieu", 'tu auras eu', 'il/elle aura eu', 'nous aurons eu', 'vous aurezeu', 'ils/elles auront eu']
Subjonctif
     Présent
         ["que j'aie", 'que tu aies', "qu'il/elleait", 'que nous ayons', 'que vous ayez', "qu'ils/elles aient"]
     Imparfait
         ["quej'eusse", 'que tu eusses', "qu'il/elle eût", 'que nous eussions', 'quevous eussiez', "qu'ils/elles eussent"]
     Plus-que-parfait
         ["que j'eusse eu", 'que tueusses eu', "qu'il/elle eût eu", 'que nous eussions eu', 'que vouseussiez eu', "qu'ils/elles eussent eu"]
     Passé
         ["que j'aie eu", 'que tu aieseu', "qu'il/elle ait eu", 'que nous ayons eu', 'que vous ayez eu', "qu'ils/elles aient eu"]
Conditionnel
     Présent
         ["j'aurais", 'tu aurais', 'il/elle aurait', 'nous aurions', 'vous auriez', 'ils/elles auraient']
     Passé première forme
         ["j'aurais eu", 'tu aurais eu', 'il/elle aurait eu', 'nous aurions eu', 'vous auriezeu', 'ils/elles auraient eu']
     Passé deuxième forme
         ["j'eusse eu", 'tu eusses eu', 'il/elleeût eu', 'nous eussions eu', 'vous eussiez eu', 'ils/elles eussenteu']
Participe
     Présent
         ['ayant']
     Passécomposé
         ['ayant eu']
     Passé
         ['masc.sg.: eu', 'masc.pl.: eus', 'fém.sg.: eue', 'fém.pl.: eues']
Impératif
     Présent
         ['aie', 'ayons', 'ayez']
     Passé
         ['aie eu', 'ayons eu', 'ayez eu']
Infinitif
     Présent
         ['avoir']
     Passé
         ['avoir eu']

Надеюсь, это поможет. Не стесняйтесь спрашивать, если вы не понимаете.

Вернуться на верх