我编写了一个 Flask 应用程序,它以多列表格的形式显示一些数据。每列都有一个标题单元格。单击列的标题单元格,我想根据列的先前状态对列的内容进行向上或向下排序。由于点击检测发生在浏览器中,看来我需要创建一个 JavaScript 点击处理程序,它需要以某种方式通知服务器上的应用程序,然后服务器对表格进行排序并重新显示它。
我不是一名 JavaScript 程序员,我不知道如何建立这种联系。我怎样才能做到这一点?有没有更简单的方法来完成我想要的事情?
最佳答案
此操作不需要 JavaScript,您可以在渲染模板时提供带有排序参数的字典。不是完整的代码,但这应该可以传达想法:
sortparams = { 'sortby': 'column_name', 'sortdir': 'asc' }
...
return render_template('example.html', sortparams=sortparams)
根据设置,在模板中显示适当的表格列标题,并在用户单击标题时调用相同的 View ,并更改排序参数。
如果用户单击当前排序列的列标题,请按照以下方式重置排序:
{% if sortparams.sortby == 'column_name' %}
<a href="url_for('sameroute', sortby=None)">Column_Name, sorted by</a>
{% endif %}
如果调用 View 时未提供排序参数,则在渲染模板时使用指示“无排序”的默认值对其进行初始化。
编写一个方便的函数来提取排序参数,然后您可以在每个需要排序的路由中重复使用它。
如果您还完全生成了表格,并且不必手动重复数十列,那么这种方法显然效果最好。
关于javascript - 对 Flask 中创建的表中的列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443769/