多个表中的“加载更多”分页按钮。Django

0 投票
1 回答
1894 浏览
提问于 2025-04-17 19:50

我有一个表单,它会查询数据库并返回放在多个表格中的信息。每个表格的行数可以达到几百行。每一行的数据都是我自己定义的一个模型。所有某个表格的行数据都存放在一个对象容器里。

我想一开始只加载每个表格的前50行。在每个表格的底部,我想放一个“加载更多”的按钮,点击后可以再加载50行数据(如果剩下的行数少于50行,就加载剩下的行)。

Django的分页教程看起来好像只能把数据分成不同的页面来显示。我能不能做一个带有“加载更多”按钮的行分页?或者我想要的这个功能根本无法实现?

编辑:这是我目前打印每个表格行的方式,使用的是一个简单的循环。

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

{% endfor %}

这是我为一个表格写的视图:

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

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

return HttpResponse(t.render(c))

1 个回答

0

当然可以。你需要向服务器发起一个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应该是你需要的全部。此外,你还需要传递一些信息,表明你只请求表格的行,而不是页面的其他部分。

撰写回答