我有一个Flask应用程序,在某些时候构建一个复杂的查询并使用数据表显示结果。这样可以正常工作,但是我的行数非常多,因此渲染它需要很长时间。我发现我应该为数据表实现副服务器处理,但我无法弄清楚如何。到目前为止,我将python中的数据列表发送到模板中,如下所示:
return render_template('show_entries.html', entries=meas[0])
其中“meas [0]”包含从查询中检索的sqlite中的数据。 在“show_entries.html”中,我正在渲染表格:
<table id="myTable" class="table table-striped" style="width:100%" >
<thead>
<tr>
<th>Time</th>
<th>Mean Current</th>
<th>Vapour Pressure</th>
<th>Mean Voltage</th>
<th>Temperature</th>
<th>Humidity</th>
<th>Bar Pressure</th>
<th>RPM</th>
<th>Wind Sector</th>
<th>Wind Speed</th>
<th>Air Density</th>
<th>DC Voltage</th>
<th>Power Sector</th>
<th>Furling Angle</th>
<th>Yaw Angle</th>
</tr>
</thead>
<tbody>
{% for row in entries %}
<tr>
<td>{{ row[1] }}</td>
<td>{{ row[2] }}</td>
<td>{{ row[3] }}</td>
<td>{{ row[4] }}</td>
<td>{{ row[5] }}</td>
<td>{{ row[6] }}</td>
<td>{{ row[7] }}</td>
<td>{{ row[8] }}</td>
<td>{{ row[9] }}</td>
<td>{{ row[10] }}</td>
<td>{{ row[11] }}</td>
<td>{{ row[12] }}</td>
<td>{{ row[13] }}</td>
<td>{{ row[14] }}</td>
<td>{{ row[15] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
和数据表的javascript:
<script>
$(document).ready(function(){
$('#myTable').dataTable();
});
</script>
正如我所说,它正确显示数据,但需要很长时间,所以我问是否有人在类似的情况下让它在服务器端工作,因为我尝试了一些我在datatables文档中找到的例子但是我离它不远了。
答案 0 :(得分:0)
当您使用DataTables时,您的数据会在JS代码将其包装在带有标题,分页,过滤器等的表中之前完全预加载。这是在执行客户端脚本之前加载 - 需要很长时间的地方。所以你无法通过一些客户端功能来加速它。
我建议切换到使用客户端的表数据而不是的服务器端处理:如果你的应用程序使用大量行(超过行数),它会更preferable数百)。有烧瓶插件能够生成具有分页,过滤和搜索的表格。看看Flask-Admin,它可以在服务器端完全生成这样的视图。