У меня проблема с вложенным циклом с помощью Python / HTML - PullRequest
0 голосов
/ 21 октября 2018

Я только начал изучать Flask и Python.У меня проблемы, когда я получаю значение и показываю результат из вложенного цикла

HTML:

{% for item in text %}
{% for sc in abc %}
<ul>{{item}}</ul>
<ul>
    {% for list_sc in sc %}
    <li>{{ list_sc }}</li>
    {% endfor %}
</ul>
{% endfor %}
{% endfor %}

python:

text = ['1','2']
b = [ ['a','b','c'],
     ['D','E','F']]
return render_template('index.html',text = text,abc = b)

Я хочу, чтобы вывод выводился:

1

  • a
  • b
  • c

2

  • D
  • E
  • F

Но у меня есть:

1

  • a
  • b
  • c

1

  • D
  • E
  • F

2

  • a
  • b
  • c

2

  • D
  • E
  • F

Спасибо.

1 Ответ

0 голосов
/ 22 октября 2018

Это кажется трудной задачей.Но, вдохновившись официальным документом Jinja2 (который предоставляет множество встроенных функций, включая элементы управления циклом), вот мой код, который решает вашу проблему:

{% for item in text %}
    {% for sc in abc %}

        {% if loop.index0 == 0 %}
            {% if item == '1' %}
                <ul>{{item}}</ul>

                <ul>
                    {% for list_sc in sc %}
                        <li>{{ list_sc }}</li>
                    {% endfor %}
                </ul>
            {% endif %}
        {% endif %}

        {% if loop.index0 == 1 %}
            {% if item == '2' %}
                <ul>{{item}}</ul>

                <ul>
                    {% for list_sc in sc %} 
                        <li>{{ list_sc }}</li>
                    {% endfor %}
                </ul>

            {% endif %}
        {% endif %}

    {% endfor %}
{% endfor %}

Вы можете видеть, что я использую функцию loop.index0 , которая возвращает текущую итерацию цикла, начиная с индекса 0. Это позволяет мне извлекать только данные из первого подсписка в первомили те, которые находятся во втором подсписке в моем втором состоянии.

...