#python #python-3.x #django #list #django-templates
Вопрос:
У меня есть два списка одинакового размера, вот так:
change_list = ['none', 'M', 'D', 'none]
print_list = ['examples', 'app.py', 'list.fr', 'template']
Я передаю их через представление, и мне нужно знать, какое значение в первом списке, чтобы я мог отображать элементы второго с другим цветом в соответствии с тем, что в первом списке.
Например, мне нужно отобразить ‘app.py» как оранжевый в шаблоне из-за буквы » М » в первом списке.
Я обыскал все вокруг и понятия не имею, как это сделать. Я попытался передать len списка в виде диапазона для представления следующим образом:
{% for i in len%}
{% if changes_list.i == "M" %}
<p style="color:orange;"> {{print_list.i}}</p>
{% endif %}
{% endfor %}
Но это не сработало.
Я не уверен, правильно ли я сформулировал вопрос, но я не был точно уверен, как это объяснить.
Заранее спасибо.
Комментарии:
1. Вам нужно отформатировать элементы из списка печати в зависимости от соответствующих элементов (того же индекса) в списке изменений ? Если да, проверьте мой ответ ниже.
2. Ваш ответ точен! Спасибо!
3. Для ясности вам следует изменить заголовок на что-то вроде «Сравнение соответствующих элементов двух списков в шаблоне Django». Не идеально, но помогло бы будущему поиску по той же проблеме.
Ответ №1:
Я бы сделал снимок, как показано ниже. Предупреждение, непроверенный код 😉
По вашему мнению :
change_list = ['none', 'M', 'D', 'none']
print_list = ['examples', 'app.py', 'list.fr', 'template']
template_list = list(zip(change_list, print_list))
И вы просто передаете список шаблонов в свой шаблон.
В вашем шаблоне :
{% for i in template_list%}
{% if i.0 == "M" %}
<p style="color:orange;"> {{i.1}}</p>
{% endif %}
{% endfor %}
И ты должен быть хорошим.
Пожалуйста, обратите внимание, что в представлении я использую list() aroud zip (), потому что я не знаю, будет ли объект zip работать в шаблоне Django. Не стесняйтесь тестировать без него.
Комментарии:
1. Спасибо! Это именно то, что я искал! Объект zip также работает с шаблоном Django.
2. Рад, что это помогло. Спасибо вам за возврат объекта zip.
Ответ №2:
Ваш синтаксис отключен
Вот простое решение:
Мы прокручиваем список и проверяем, равно ли i «M».
{% for i in change_list %}
{% if i == "M" %}
<p>I</p>
{% else %}
<p>I Not == M</p>
{% endif %}
{% endfor %}
Если вы хотите сравнить два списка:
{% for i in change_list %}
{% for x in print_list %}
{% if i == x %}
<p>I</p>
{% else %}
<p>I Not == X</p>
{% endif %}
{% endfor %}
{% endfor %}
Комментарии:
1. Возможно, это связано с тем, как я сформулировал название, но это не то, что я искал. Принятый ответ решает мою проблему. В любом случае, спасибо вам за ваш вклад!