#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
одноконтурного цикла я вижу только метод withfor 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 в шаблоне я выполнил цикл внутри файла маршрутизации и передал переменную с новым списком в представление.