You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Paginator失效问题排查及修复咨询

排查Django分页失效问题:所有POST条目全部显示而非分页展示

嘿,我一眼就看出问题出在哪了——你虽然在视图里正确生成了分页的page对象,但模板里根本没用到它来渲染内容!

问题根源

你的views.py已经通过_get_page函数完成了分页逻辑,生成了每页1条数据的page对象,但在top.html里,你循环的是原始的完整POST查询集item,而不是分页后的page对象里的条目。这就导致不管分页逻辑怎么处理,模板都会把所有数据全展示出来。

修复步骤

1. 修改模板的内容循环部分

打开top.html,把遍历内容的循环从遍历item改成遍历page(Page对象本身是可迭代的,直接循环它就能获取当前页的所有条目):

<div>
    {% for i in page %}  <!-- 这里把item改成page -->
    <div>
        <h2>{{ i.title }}</h2>
        <p>{{ i.index }}</p>
    </div>
    {% endfor %}
</div>

你也可以写成{% for i in page.object_list %},效果完全一样,后者更明确地指向当前页的条目列表。

2. (可选)优化视图的上下文传递

既然模板不再需要原始的item查询集了,你可以简化top视图的返回语句,去掉item参数,让代码更简洁:

def top(request):
    item = POST.objects.order_by('-created_at')
    page = _get_page(item, request.GET.get('page'))
    return render(request, 'top.html', {"page":page})  # 移除了'item':item

验证效果

修改完成后,刷新页面就能看到每页只显示1条POST数据了,分页导航的上一页、下一页和页码也能正常工作。切换页码时,页面内容会正确切换到对应页的条目。

内容的提问来源于stack exchange,提问作者user7676799

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:42:51