Как заставить DataTables загружать данные AJAX из Django по мере необходимости - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь сериализовать набор запросов Django, вернуть результаты в URL и указать DataTable на результирующий URL.Это потенциальное решение возникло для решения проблемы низкой производительности при загрузке тысяч строк из Django в DataTable через DOM.

У меня есть представление:

from django.http import HttpResponse
from django.core import serializers
def json_ouput(request):
    objects= MyModel.objects.all()
    json = serializers.serialize('json', objects)
    return HttpResponse(json, content_type='application/json')

Представление подключается к этому URL-адресу:

url(r'^home/json_ouput/$', views.json_ouput, name='json_ouput_url',),

Мой шаблон указывает на этот URL-адрес как источник AJAX для DataTable:

<table id="example">
     <thead>
         <tr>
           <th>Description</th>
           <th></th>
         </tr>
     </thead>
     <tbody></tbody>
</table>


<script defer type="text/javascript" language="javascript" class="init">
  $(document).ready(function() {
    $('#example').dataTable( {
      "processing": true,
      "ajax": {
        "processing": true,
        "url": "{% url 'json_output_url' %}",
        "dataSrc":''
      },
      "scrollY":        800,
      "deferRender":    true,
      "scroller":       true,
      "columns": [
        { "data": "fields.description" },
        { "data": "pk" }
                  ]
                });
              });
</script>

Результаты отображаются примерно через 40 секунд для 9000 строк.Это та же производительность, что и при загрузке данных через DOM (без сериализации в JSON) и без DataTables Scroller .Насколько я понимаю, Scroller не загружает все данные, но, похоже, загружает все данные одновременно (т.е. все 9 000 строк находятся в DOM, прежде чем данные будут показаны).

Как получить DataTables для загрузки данных по частям при прокрутке таблицы?Или я могу что-то сделать на стороне Django, чтобы сначала разбить данные на страницы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...