Как заполнить 2 карточки столбцов из цикла Python

#python #python-3.x #loops #flask #semantic-ui

#python #python-3.x #петли #фляжка #семантический пользовательский интерфейс

Вопрос:

введите описание изображения здесьЯ пытаюсь перебрать список Python, чтобы заполнить строки из 2 центрированных семантических карточек пользовательского интерфейса, но не понимаю, как правильно заполнить вторую карточку в строке. На данный момент у меня в коде есть строка «привет», но до этого у меня был «пользователь», но, конечно, я получал одного и того же пользователя дважды : /

      [![enter image description here][1]][1]<div class="ui two column centered grid">
        {% for user in users %}
          <div class="four column centered row">
            <!-- card 1 -->
            <div class="column"><div class="ui card">
              <div class="image">
                <img src="/static/images/matthew.png">
              </div>
              <div class="content">
                <a class="header" href="{{ url_for('show', id=user.id)}}">{{ user.first_name }}</a>
                <div class="meta">
                  <span class="date">Joined in 2013</span>
                </div>
                <div class="description">
                  {{ user.first_name }} is a surfer living in Aguadilla.
                </div>
              </div>
              <div class="extra content">
                <a>
                  <i class="user icon"></i>
                  22 Friends
                </a>
              </div>
            </div></div>
            <!-- card 2 -->
            <div class="column">hey</div>
          </div>
        {% endfor %}
      </div>
 

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

1. Проверьте элементы card 2 в инструментах разработки вашего браузера, их следует игнорировать из-за некоторых проблем со стилем.

2. перед отправкой данных в шаблон вы можете преобразовать данные из плоских [A, B, C, D, ...] в 2-мерные [ [A, B], [C, D], ...] , а затем использовать два for цикла — for row in data: for item in row: ...

3. для for одноконтурного цикла я вижу только метод with for i in range(0, len(users), 2): users[i], users[i 1] . В конце концов, с zip() for user1, user2 in zip(users[0::2], users[1::2]):

4. Я смирился с этим и работал. Спасибо, фурас!

Ответ №1:

Если у вас есть плоский список [0, 1, 2, 3, ...] вместо [ [0,1], [2,3], ...] then, вы можете попробовать использовать нарезку с zip() , чтобы преобразовать его.

Используя users[0::2] вы можете получить даже пользователей (0,2,4, ...) ,

Используя users[1::2] вы можете получить нечетных пользователей (1,3,5, ...)

И используя его с zip() вами, вы можете создавать пары (0,1), (2,3), ... , которые вы можете использовать для создания строк с двумя карточками.

 for user1, user2 in zip(users[0::2], users[1::2]):
    # ... create card1 with user1 ...
    # ... create card2 with user2 ...
 

Я не знаю, zip() можно ли использовать в шаблоне, но в конечном итоге вы можете использовать этот метод для создания списка [ [0,1], [2,3], ...] перед отправкой его в шаблон.

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

1. Огромное спасибо, вместо использования zip в шаблоне я выполнил цикл внутри файла маршрутизации и передал переменную с новым списком в представление.