【问题标题】:DataTables, serverSide and pagination on DjangoDjango 上的数据表、服务器端和分页
【发布时间】:2020-01-11 17:13:41
【问题描述】:

我将 DataTables 与 serverSide render 一起使用。

<script>
  $(document).ready( function () {
    $('#myTable').DataTable({
      "processing": true,
      "serverSide": true,
      "ajax": "{% url 'core:persons_json' %}",
        "columns": [
          {"data": "full_name"},
          {"data": "email"},
        ]
    });
  });
</script>

在我的views.py中我有:

def persons_json(request):
    persons = Person.objects.all()
    data = [item.to_dict_json() for item in persons]
    page = 1
    per_page = 10
    res = {
        'data': data,
        'page': page,
        'per_page': per_page,
        'total': math.ceil(persons.count() / per_page)
    }
    return JsonResponse(res)

但他仍然返回所有的人。而且我想避免加载大量数据。

但是当我定义时,例如:

def persons_json(request):
    length = int(request.GET.get('length'))
    persons = Person.objects.all()[:length]
    data = [item.to_dict_json() for item in persons]
    page = 1
    per_page = 10
    res = {
        'data': data,
        'page': page,
        'per_page': per_page,
        'total': math.ceil(persons.count() / per_page)
    }
    return JsonResponse(res)

length = int(request.GET.get('length'))是服务器端发送的参数:

http://localhost:8000/person/json/?draw=1&columns%5B0%5D%5Bdata%5D=full_name&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=email&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1568072064631

请注意,我们有:start=0&amp;length=10

我的问题如下:当我使用第二个选项时。其他项的分页没有出现在DataTables中,即

我想要这里

但只出现一页。

有谁知道我如何返回所有页面,然后单击每个页面来前进页面?

【问题讨论】:

    标签: django datatables pagination server-side


    【解决方案1】:

    我解决了。 DataTable 发送开始和长度。而API需要返回recordsTotal和recordsFiltered。

    https://github.com/rg3915/django-datatables-experiment/issues/1

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2012-02-16
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多