Как установить обратный аргумент в sort_url в таблице Flask через Python без JS или HTML модификаций таблицы? - PullRequest
0 голосов
/ 17 марта 2020

Учитывая следующую таблицу

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. Таблицы, которые я видел в Интернете, обычно имеют стрелки вверх / вниз

enter image description here

, которые при нажатии переключают порядок сортировки.

Это включает в себя JS и HTML модификации. Я хотел бы придерживаться Flask и Python, если это возможно. То, как Flask таблицы в настоящее время работают, - это то, что щелчок не может переключать значение reverse.

Даже если я выставлю параметр reverse для конструктора моей собственной таблицы, как этот

def __init__(self, items, reverse):
  super().__init__(items, sort_reverse=reverse)

, чтобы я мог установить его в зависимости от значения, извлеченного из URL, мой вопрос о том, как на самом деле установить значение, остается без ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...