#python #python-3.x #flask #html-table
Вопрос:
Здесь новичок. У меня есть проблема, которая меня расстраивает. У меня есть таблица колб, которая должна отображать список из python, но она отображает только первую строку в списке python.
Вот как выглядит вывод списка python, когда я запускаю сценарий py в коде visual studio.
[('location 123', 'Hello Street', 'Los Angeles', 1.0, 40, 3, '2021-08-28T02:28:21.000000Z')]
[('location xyz', 'Beta Rd', 'Burlington', 1.0, 40, 2, '2021-08-28T00:30:36.000000Z')]
[('location abc', 'Alpha Ave', 'Seattle', 1.0, 40, 0, '2021-08-25T03:53:26.000000Z')]
Строки являются динамическими, поэтому не в каждом списке будет заданное количество.
Первая строка выглядит правильной, вместе с заголовками, и все выстраивается в ряд. Но я не могу заставить появиться дополнительные строки.
вот это main.py строка, задающая выходные данные
return render_template("result.html", headings=headings, output=city_details())
вот мой result.html файл
<body>
<h1>Results</h1>
<table class="table">
<tr class="table__header">
{% for header in headings %}
<th class="table__cell">{{ header }}</th>
{% endfor %}
</tr>
{% for row in output %}
<tr class="table__row">
{% for cell in row %}
<td class="table__cell">{{cell}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</body>
Вот часть скрипта python, которая задает список
for details in data:
location = details['location']
street = details['street']
city = details['city']
scale = details['scale']
etc...
city_details = location, street, city, scale
total_details = [city_details]
return total_details
У кого-нибудь есть идеи, что не так с моей таблицей для цикла? Или мой список составлен неправильно? Я предполагаю, что это что-то действительно простое, что я упускаю из виду, но я не могу этого понять и сводлю себя с ума.
Заранее спасибо.
Ответ №1:
Предполагая, что вы намерены обработать все детали в данных, его цикл завершается рано.
for details in data:
...
return total_details
Ответ №2:
Фрагмент вашего кода, который вы показали, эквивалентен
details = data[0]
location = details['location']
street = details['street']
city = details['city']
scale = details['scale']
# ... any additional processing ...
city_details = location, street, city, scale
total_details = [city_details]
return total_details
потому что вы сделали безусловный возврат внутри цикла.
Я бы написал отдельную функцию, которая превращается details
в city_details
, а затем использует понимание списка:
# earlier in your code, add this top-level function:
def make_table_row(details):
location = details['location']
street = details['street']
city = details['city']
scale = details['scale']
# ... any additional processing ...
return location, street, city, scale
# replace your original loop with this:
return [make_table_row(details) for details in data]