Django как выполнить цикл с использованием диапазона через два списка одновременно
Я работаю с Django и хотел бы выполнить итерацию по двум спискам так, чтобы они были рядом: my views file:
def displayDict(request):
data = ["a", "b", "c"]
data2 = ["x", "y", "z"]
return render(request, 'chattr.html',
{'range': range(0,len(data)-1),'dictItems': data, "otherDict" : "other_bot", "dictItems_bot": data2, "otherDict2": "bot" , "duo" : (data, data2)})
мой шаблон:
{% for i in range %}
<p>
{{i}} <br>
<b>{{otherDict}}:</b> {{dictItems.i}} <br>
<b>{{otherDict2}}:</b> {{dictItems_bot.i}} <br>
{% comment %} {{a|add:1}} {% endcomment %}
</p>
{% endfor %}
Я хотел бы получить веб-страницу, которая выглядит следующим образом:
other_bot: 'a'
dictItems_bot: 'x'
other_bot: 'b'
dictItems_bot: 'y'
other_bot: 'c'
dictItems_bot: 'z'
В настоящее время ничего не отображается, кроме имен ботов:
other_bot:
dictItems_bot:
другой_бот:
dictItems_bot:
Возможно, я также смогу сделать этот внутренний цикл, используя кортежи, Шаблон Django: цикл через два списка. Но это было бы намного сложнее,...
Для таких проблем у меня установлена Django Debug Toolbar, которая позволяет мне видеть контекст. Я подозреваю, что ваш "диапазон" имеет проблему, потому что {{i}} не выводится (или выводится?), поэтому вы просто зацикливаетесь один раз вместо трех, то есть не зацикливаетесь вообще.
попробуйте это...
view.py
def display_dict(request):
data = ["a", "b", "c"]
data2 = ["x", "y", "z"]
context = {"data": zip(data, data2), "otherDict": "other_bot","otherDict2": "dictItems_bot"}
return render(request, 'home.html', context)
HTML
{% for element in data %}
<p><b>{{ otherDict }}:</b>{{ element.0 }}</p>
<p><b>{{ otherDict2 }}:</b>{{ element.1 }}</p>
{% endfor %}