Учитывая следующую таблицу
class ProductsTable(Table):
allow_sort=True
id=Col('ID', show=False)
price=Col('Price')
available_online=Col('Available online?')
available_num=Col('In stock')
edit=ButtonCol('Edit', url_kwargs=dict(id='id'), endpoint='/products')
def sort_url(self, col_id, reverse=False):
if reverse:
order = 'desc'
else:
order = 'asc'
return '?sort={}&order={}'.format(col_id, order)
Из этого я получаю следующие примеры путей:
http://localhost:5000/products?sort=price&order=asc
http://localhost:5000/products?sort=available_num&order=asc
Я использую параметры для генерации запроса SQL, который я выполняю моя база данных SQLite и рендер соответствующей отсортированной таблицы.
Теперь моя проблема связана с аргументом reverse
в моем sort_url
. Я не могу найти ни одного примера, который не имеет его в качестве необязательного аргумента, и, следовательно, я не могу найти ничего, что говорит мне, как этот аргумент может быть установлен.
Конечно, я всегда могу изменить URL. Для двух приведенных выше примеров это будет означать
http://localhost:5000/products?sort=price&order=desc
http://localhost:5000/products?sort=available_num&order=desc
Однако я хочу, чтобы порядок менялся всякий раз, когда пользователь нажимает на заголовок столбца таблицы спецификаций c.
Как мне это сделать который? Должен ли я использовать фактический HTML (а также добавить JavaScript) или это возможно сделать через Flask. Таблицы, которые я видел в Интернете, обычно имеют стрелки вверх / вниз
, которые при нажатии переключают порядок сортировки.
Это включает в себя JS и HTML модификации. Я хотел бы придерживаться Flask и Python, если это возможно. То, как Flask таблицы в настоящее время работают, - это то, что щелчок не может переключать значение reverse
.
Даже если я выставлю параметр reverse
для конструктора моей собственной таблицы, как этот
def __init__(self, items, reverse):
super().__init__(items, sort_reverse=reverse)
, чтобы я мог установить его в зависимости от значения, извлеченного из URL, мой вопрос о том, как на самом деле установить значение, остается без ответа.