如何在Django模板上迭代3个嵌套列表

2024-04-29 18:27:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我的视图上有3个列表,我想用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', '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']]

这里,每个“卡片过账”都有相关的“数组”,每个“数组” 关联的“post_内容”

page structure what I want页图片

我还试过用一个邮政编码列表

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>

有没有更好的方法来做这件事请让我知道我也喜欢你的建议。有类似的问题,比如这里,这里,但这些都没有帮助我的问题。如果你需要更多的信息,请让我知道


Tags: divpassprcardilnousclassque
2条回答

我用相同的示例列表编写了一个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']

希望这有帮助。如果你不明白,尽管问

考虑以下示例场景来回答上述问题。 我有一个主题叫“突发新闻”,“最新新闻”,它有一个子主题叫“来自印度”,“来自美国”,等等。 每个子主题中都有许多文章。 上面的树结构是

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>

说明: 突发新闻是你们的卡片,位置是你们的数组,文章列表是你们的帖子内容。上面的代码不检查任何关联,只显示存在的内容。 你可以进行条件检查

注意:我删除了三个列表的概念,并制作了具有键和值的字典,我可以使用键作为关联

希望这对你有所帮助,如果你不想问的话

相关问题 更多 >