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
相关产品推荐
相关产品推荐

