[英]How to iterate 3 nested lists on django template
我的视图中有 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 是你的数组,而文章列表是你的帖子内容。 上面的代码不检查任何关联,只是显示那里的任何内容。 您可以进行条件检查。
注意:我删除了三个列表的概念并制作了具有键和值的字典,我可以使用键作为我的关联。
如果不随意询问,希望这会有所帮助。
我已经用相同的示例列表编写了一个 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']
希望这可以帮助。 如果您不明白,请随时提问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.