有没有办法在填充查询时在 Django 模板中呈现大型查询集?



我有一个相当大的查询集和一个非常慢的服务器。当我呈现我的模板时,我注意到页面仅在填充查询集后呈现。为了提高页面加载的速度,我想也许我的页面可以在查询集被过滤时动态呈现查询集,但我不确定 Django 中是否有这样的实现。 我的查询集有 1000 多个项目,每个项目大约有 20 个属性,我需要在页面上显示所有这些属性。我尝试使用我的Handsontable渲染,但我发现所花费的时间是实际运行查询集过滤器,而不是手动可渲染。

如果有人能帮助我指出正确的方向,将不胜感激

欢迎来到堆栈溢出@commish :)

为了弄清楚一些基础知识,当您说"即时"时,您可能会想到像 youtube 这样的东西,其中视频不断流式传输给您。

这不是 Django 处理请求和响应的方式。

实际发生的事情是这样的:

  1. 网页点击网址(例如:本地主机:8000/列表/(
  2. 请求由 django 视图函数接收
  3. 它调用数据库并等待,直到收到所有对象
  4. Django 使用查询集来构建 html 响应
  5. Django 发回此响应

(不完全是这样,但简化解释(。

如果你想减少步骤3和4所花费的时间,因为你的查询集很大,最简单的选择是"分页"你的请求。

因此,例如,不要将所有 1000 个项目发回,而是只发送 100 个项目作为第一页。然后,当用户单击"加载更多"或转到类似 (localhost:8000/list/?page=2( 的 url 时,您加载下一组 100 个项目,依此类推。

Django 有这方面的文档,详细解释了这个概念: https://docs.djangoproject.com/en/3.0/topics/pagination/

最新更新