2017-02-20 21 views
1

У меня есть приложение Flask и в какой-то момент выстроить сложный запрос и отобразить результаты с помощью datatables. Это отлично работает, но у меня действительно большое количество строк, поэтому для его рендеринга требуется много времени. Я узнал, что мне нужно реализовать обработку бокового сервера для данных, но я не могу понять, как это сделать. До сих пор, я посылаю список данных из питона в шаблон, как это:Внедрить обработку на стороне сервера для datatables в python с sqlite

return render_template('show_entries.html', entries=meas[0]) 

где «тез [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 для DataTables:

<script> 
$(document).ready(function(){ 
    $('#myTable').dataTable(); 
}); 
</script> 

Как я уже говорил, он отображает данные правильно, но занимает много так что я спрашиваю, сделал ли кто-нибудь работу на стороне сервера в той же ситуации, что и в некоторых примерах, которые я нашел в документации по данным, но я нигде не приближаюсь к ней.

+0

Из пользовательского интерфейса и перспективы производительности, как правило, плохая идея иметь огромную таблицу на странице. Разделите его или сделайте что-нибудь еще. Слишком много информации на странице просто заставляет людей перегружаться и слишком долго загружается. – reptilicus

ответ

0

Когда вы используете DataTables, ваши данные полностью предварительно загружаются до того, как JS-код обернет его в таблицу заголовками, разбиением на страницы, фильтром и т. Д. Это займет много времени для загрузки - до, выполняющего сценарий на стороне клиента. Таким образом, вы не можете ускорить его с помощью некоторой клиентской функции.

Я бы посоветовал, чтобы переключиться на стороне сервера обработки табличных данных вместо использования на стороне клиента: это более preferable, если ваше приложение работает с большим количеством строк (больше, чем несколько сотен). Существуют флеш-плагины, способные генерировать таблицы с разбивкой на страницы, фильтрами и поиском. Взгляните на Flask-Admin, он может генерировать такие представления полностью на стороне сервера.

+0

спасибо. Попробую попробовать фляжку. Это может сделать работу. – tzoukritzou