Как уже упоминалось, таблицы данных будут хорошо подходить для вашего внешнего интерфейса, поскольку он автоматически обрабатывает все функции разбивки на страницы, сортировку и поиск.
Вы можете sh посмотреть репозиторий search-generi c -таблицы . Это моя реализация, в которой используется база данных SQLite, но большая часть того, что вы, вероятно, ищете, уже есть.
Шаблоны построены таким образом, что данные в них жестко не закодированы. Многие обучающие программы Flask включают жесткое кодирование заголовков в шаблон <td>Header Name</td>
, что не позволяет шаблонам быть общими c.
Если вы не хотите клонировать все репо, вы, вероятно, можете просто скопировать оба шаблона из папки шаблонов, которые включают необходимые ссылки CDN для работы таблиц данных.
Чтобы это работало с вашим кодом, ( обратите внимание, что ниже предполагается, что каждый словарь в вашем списке имеет одинаковые ключи! ) вы можете сделать следующее. Давайте назовем ваш список словарей original_items
и сделаем значения уникальными для ясности:
original_items = [{'item 1': "Banana", 'item 2': "Car"}, {'item 1': "Apple", 'item 2': "Bike"}]
Определите функцию, которая превратит это в список OrderedDicts
. Это сохранит предсказуемый порядок столбцов в таблице:
import collections
def sort_dict(d):
return collections.OrderedDict(sorted(d.items()))
ods = [sort_dict(d) for d in original_items]
Теперь превратите их в список списков:
table_items = [ list(v for _,v in od.items()) for od in ods]
table_items
теперь список списков, который выглядит например:
[['Banana', 'Car'], ['Apple', 'Bike']]
Затем получите заголовки из первого словаря в списке ods
:
headers = [k for k,_ in ods[0].items()]
headers
теперь выглядит так:
['item 1', 'item 2']
Таким образом, передача их в шаблон становится такой же простой, как функция просмотра, которая выглядит так:
@app.route('/all')
def all():
return render_template('index.html', headers=headers, objects=table_items)
Это прекрасно отображается в браузере:
Если вы хотите изменить порядок столбцов слева направо, таблицы данных предоставляют удобный способ сделать это изначально без необходимости изменять код Python.