【问题标题】:Beginner - using datatables server-side processing with django初学者 - 使用 django 的数据表服务器端处理
【发布时间】:2018-08-29 20:48:27
【问题描述】:

我是 Django 和网络开发的新手,正在寻找有关让服务器端处理与我的数据表一起工作的指导。

基本上,我有一个包含 50 万条记录的外部 .db SQLite 文件,我想在引导数据表上显示这些记录。

在我的views.py文件中,每当他们访问index.html时,我都会做一个查询语句来获取记录(不确定这是否效率低,但这是一个小型的爱好网站)

groups = cursor.execute("""SELECT * FROM PlayerGroups""")
return render(request, 'home/index.html', {'groups': groups}) # the issue since it returns 500k records which is too much for the client to handle.

我知道我需要在“index.html”中添加这样的内容:

<script>
    $(document).ready(function(){
        $('#example').dataTable( {
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": <confused about this part...>
        });
    });
</script>

我对制作自己的数据库 API 并将 ajax 源链接到我的视图/urls 文件感到困惑。我在网上看过的所有指南都显示了带有模型和东西的服务器端处理。我只是想在数据表上显示一个外部 .db 文件。

任何指导或帮助都意义重大。

【问题讨论】:

    标签: ajax django python-3.x datatable bootstrap-4


    【解决方案1】:

    不,您不想查询和显示 500,000 条记录。这对前端和后端来说都太重了。一种解决方案是分页。

    将前端分成页面。每页显示一个固定数量的记录,例如 10 条记录。当用户请求第一页时,查询 db 表中的前 10 条记录。当用户请求下一页时,查询接下来的 10 条记录。以此类推。

    您可以使用 sqlite LIMIT 和 OFFSET 子句来完成此操作

    SELECT
     id, name
    FROM
     table
    LIMIT 10 OFFSET offset;
    

    offset = page_number * 10.

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多