Как использовать вложенные циклы для создания таблиц

#flask #jinja2

#flask #jinja2

Вопрос:

У меня есть два списка, с помощью которых я хочу создать таблицу, используя циклы jinja и for. При использовании одного списка и одного цикла for проблем не возникает.

 <table>
    <tr>
        <th>Customer</th>
        <th>Product</th>
        <th>QTY</th>
    </tr>

    {% for i,e in list_2 %}
    <tr>
        <td>{{ i }}</td>
        <td>{{ e }}</td>
    </tr>
    {% endfor %}
 </table>
 

Создает

введите описание изображения здесь

Однако, когда я пытаюсь ввести другой цикл for из другого списка, это происходит.

 <table>
    <tr>
        <th>Customer</th>
        <th>Pro</th>
        <th>QTY</th>
    </tr>

    {% for i,e in list_2 %}
    <tr>
        <td>{{ i }}</td>
        <td>{{ e }}</td>
        {% for i in qtyyyy %}
        <td>{{ i }}</td>
        {% endfor %}
    </tr>
    {% endfor %}
</table>
 

введите описание изображения здесь

Это мой идеальный результат. Я пытался испортить окончание циклов, но не смог правильно отобразить его.

введите описание изображения здесь

Комментарии:

1. Вы не включили входные данные в качестве структуры данных python в свой вопрос. Это поможет вам получить ответ.

Ответ №1:

Есть несколько способов решить проблему.
Одним из решений было бы предварительно объединить два списка с помощью zip.

 list_1 = [
  ('(Retail)', 'Example'), 
  ('(1)(Distributor)', 'Example'), 
  ('(Ditributor)', 'Example'), 
  ('False', 'Example')
]
list_2 = [35.0, 147.0, 50.0, 180.0]
list_3 = [a   (b,) for a,b in zip(list_1, list_2)]
 
 <table>
{% for a,b,c in list_3: %}
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
{% endfor %}
</table>
 

Но вы также можете использовать текущий индекс для доступа к значениям.

 <table>
  {% for a,b in list_1 %}
    <tr>
      <td>a</td>
      <td>b</td>
      <td>{{ list_2[loop.index0] }}</td>
    </tr>
  {% endfor %}
</table>
 

Комментарии:

1. <td>{{list_2[loop.index0] }}</td> Был ключевым здесь для меня. Для тех, кто еще искал, это была проблема. Список нуждался в индексе. Большое спасибо!!!