rba*_*dar 5 python sorting flask flask-table
鉴于下表
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)
Run Code Online (Sandbox Code Playgroud)
由此我得到以下示例路径:
http://localhost:5000/products?sort=price&order=asc
http://localhost:5000/products?sort=available_num&order=asc
Run Code Online (Sandbox Code Playgroud)
我使用这些参数生成一个 SQL 查询,该查询在我的 SQLite 数据库上执行并呈现相应的排序表。
现在我的问题来自reverse我的sort_url. 我找不到任何没有它作为可选参数的示例,因此我无法找到任何告诉我如何设置此参数的示例。
当然,我可以随时更改 URL。对于上面的两个例子,这意味着
http://localhost:5000/products?sort=price&order=desc
http://localhost:5000/products?sort=available_num&order=desc
Run Code Online (Sandbox Code Playgroud)
但是,我希望在用户单击特定表格列的头部时更改顺序。
我怎么做?我是否必须使用实际的 HTML(并添加 JavaScript)或者是否可以通过 Flask 来完成。我在网上看到的表格通常有向上/向下箭头符号
每当点击时,切换排序顺序。
这涉及到 JS 和 HTML 的修改。如果可能的话,我想坚持使用 Flask 和 Python。Flask 表目前似乎工作的方式是单击无法切换reverse.
即使我reverse像这样将参数公开给我自己表的构造函数
def __init__(self, items, reverse):
super().__init__(items, sort_reverse=reverse)
Run Code Online (Sandbox Code Playgroud)
这样我就可以根据从 URL 中提取的值来设置它,我的问题如何实际设置该值仍未得到解答。