Сравнение соответствующих элементов двух списков в шаблоне Django

#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. Возможно, это связано с тем, как я сформулировал название, но это не то, что я искал. Принятый ответ решает мою проблему. В любом случае, спасибо вам за ваш вклад!