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

Django首页Paginator分页组件不显示问题求助

Django分页组件不显示问题排查与修复

问题根源

你的视图函数home中,将分页后的Page对象以pr为键名传入模板,但HTML模板渲染分页时用的是products变量——模板找不到该变量,导致分页组件无法渲染。

修复步骤

1. 统一模板变量名

将HTML分页部分的products全部替换为pr,与视图传入的键名保持一致,这是解决问题的核心。

2. 可选:优化视图异常处理(更规范)

原视图的异常捕获逻辑可以简化,利用Django Paginator的特性让代码更简洁。

修改后的代码

调整后的index.html分页代码

<div class="mx-auto">
    <div class="text-center">
        {% for pg in pr.paginator.page_range %}
        <a href="?page={{pg}}" class="btn btn-light btn-sm {% if pr.number == pg %} activate {% endif %}">{{pg}}</a>
        {% endfor %}
    </div>
</div>

优化后的views.py(可选)

from django.core.paginator import Paginator, EmptyPage
from django.shortcuts import get_object_or_404, render

def home(request, c_slug=None):
    c_page = None
    if c_slug:
        c_page = get_object_or_404(Categ, slug=c_slug)
        prodt = Products.objects.filter(category=c_page, available=True)
    else:
        prodt = Products.objects.filter(available=True)
    
    cat = Categ.objects.all()
    paginator = Paginator(prodt, 4)
    page_number = request.GET.get('page', 1)
    
    try:
        products = paginator.page(page_number)
    except EmptyPage:
        # 页码超出范围时返回最后一页
        products = paginator.page(paginator.num_pages)
    
    return render(request, 'index.html', {'ct': cat, 'pr': products})

额外检查点

  • 确保prodt查询集的总数据量大于4(分页每页显示4条),若数据不足4条,分页组件不会显示。
  • 检查CSS类activate是否存在,保证当前页码的样式能正常渲染。

内容的提问来源于stack exchange,提问作者Adarsh A.R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:15:37