我编写了一个Flask应用程序,它以一个包含多列的表格的形式显示一些数据。每列都有一个标题单元格。单击列的标题单元格,我想根据其先前的状态向上或向下对列的内容进行排序。由于点击检测发生在浏览器中,似乎我需要创建一个javascript点击处理程序,它以某种方式需要通知服务器上的应用程序,然后对表进行排序并重新显示它。
不是javascript程序员,我不知道如何建立这种连接。我怎样才能做到这一点?有没有更简单的方法来做我想要的事情?
答案 0 :(得分:1)
这不需要JavaScript,您可以在渲染模板时为dict提供排序参数。不是一个完整的代码,但这应该得到了这个想法:
sortparams = { 'sortby': 'column_name', 'sortdir': 'asc' }
...
return render_template('example.html', sortparams=sortparams)
根据设置,在模板中显示相应的表列标题,并在用户单击标题时调用相同的视图,并使用更改的排序参数。
如果用户单击当前已排序列的列标题,请按以下行重置排序:
{% if sortparams.sortby == 'column_name' %}
<a href="url_for('sameroute', sortby=None)">Column_Name, sorted by</a>
{% endif %}
如果在调用视图时未提供排序参数,请在呈现模板时使用指示“无排序”的默认值对其进行初始化。
编写一个便利函数来提取排序参数,您可以在每个需要排序的路径中重复使用它。
如果您还完全生成了表格,并且不必手动重复数十列,这种方法显然效果最佳。