【问题标题】:"Load more" pagination button in multiple tables. Django多个表格中的“加载更多”分页按钮。姜戈
【发布时间】:2013-03-21 12:55:59
【问题描述】:

我有一个查询数据库并返回放置在多个表中的信息的表单。每列的行数可以达到数百。每一行都作为我声明的自定义模型返回。某个表的所有行都存储在对象容器中。

我想最初只加载每个表中的前 50 行。在每个表的底部,我想放置一个“加载更多”按钮,单击该按钮时,将加载 50 个以上的查询(如果少于 50 个,则加载其余的结果)。

Django 的分页教程让我看起来只能将分页分成不同的页面。我可以使用加载更多按钮进行行分页吗?还是我想要的东西不可能创造出来?

编辑:这是我当前打印每个表的行的方式,这是一个简单的 for 循环

{% for r in row %} 
<tr>
<td>{{ r.name }}</td>
<td>{{ r.age }}</td>
<td>{{ r.state }}</td> </tr> 

{% endfor %}

这是我对 1 张桌子的看法:

pers = Personal.objects.all()
pers = formfilter (name, age, state)

c = RequestContext(request, {
    "cname": name})

return HttpResponse(t.render(c))

【问题讨论】:

  • 该表的视图代码在哪里。我们可以为此创建选定的选项。在该选项中,我们可以定义 50、70 或 80,这取决于您喜欢什么。用户可以选择他想在一个页面中显示多少个查询。你在使用分页器吗?
  • 我在我的视图代码中编辑了
  • 尝试使用 Paginator 解决您的问题
  • 我现在正在浏览教程,但只有多个 html 页面的解释。
  • Django 有一个内置的分页,

标签: python django


【解决方案1】:

当然可以。您必须使用所需信息对服务器进行 AJAX 调用。当您在 Django 中处理此请求时,您应该只响应表格行,而不是整个 HTML 页面。然后在客户端收到此响应时,只需将其添加到表的末尾即可。

响应应如下所示:

<tr><td>col1 row 51</td></tr>
...
<tr><td>col1 row 100</td></tr>

这是一个可以解决问题的示例 JS 代码:

$.get("/yourapp/data", { page: 2}) .done(function(data) {
    $('.mytable').append(data);
});

但是,我不记得它们是什么,而不仅仅是 {page: 2} 提供 Django 分页信息所需的。我相信page 就是您所需要的。此外,您还想传递一些东西来表明您只请求表格行,而不请求页面的其余部分。

【讨论】:

  • 什么是“/yourapp/data”链接?它是特定表格第二页的超链接吗?
  • 这是响应表格内容的页面。通常它与您看到表格的页面相同,但在这种情况下,您应该传递 rows_only:1page:2 并在您的视图中检索此参数并根据其值呈现不同的模板。一个模板用于整个页面,第二个模板仅用于表格行。
猜你喜欢
  • 2020-10-27
  • 2015-05-24
  • 1970-01-01
  • 2014-12-21
  • 2017-09-19
  • 2017-12-21
  • 2011-11-27
  • 1970-01-01
  • 2017-07-10
相关资源
最近更新 更多