Django分页控件不显示问题:手动跳转有效但页面无分页元素
Django分页控件不显示问题排查
我在Django中编写了如下视图与模板代码实现分页功能,手动输入分页链接可正常跳转至对应页面,但页面上的分页控件完全不显示,甚至相关div内无任何内容,不清楚代码中存在什么问题。
视图代码
def allProductCat(request, c_slug=None): c_page = None products_list = None if c_slug is not None: c_page = get_object_or_404(Category, slug=c_slug) products_list = Product.objects.all().filter(category=c_page, available=True) else: products_list = Product.objects.all().filter(available=True) paginator = Paginator(products_list, 6) try: page = int(request.GET.get('page', '1')) except: page = 1 try: products = paginator.page(page) except(EmptyPage, InvalidPage): products = paginator.page(paginator.num_pages) return render(request, "category.html", {'category': c_page, 'product': products})
模板代码
<div class="mx-auto"> {% if product.paginator.num_page %} <hr> <div class="text-center"> {% for pg in product.paginator.page_range %} <a href="?page={{pg}}" class="btn btn-light btn-sm {% if product.number == pg %} active {% endif %}">{{pg}}</a> {% endfor %} </div> {% endif %} </div>
问题原因及解决方法
问题出在模板的判断条件上:你使用了product.paginator.num_page,但Django Paginator类的正确属性是**num_pages(复数形式)**,少了末尾的s导致条件永远不成立,所以分页控件的DOM结构根本不会渲染。
修复步骤:
- 将模板中的判断语句修改为:
{% if product.paginator.num_pages %}
- (可选)如果希望只有当总页数大于1时才显示分页控件,可以进一步修改为:
{% if product.paginator.num_pages > 1 %}
内容的提问来源于stack exchange,提问作者Sando Philip
相关产品推荐
相关产品推荐

