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

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结构根本不会渲染。

修复步骤:

  1. 将模板中的判断语句修改为:
{% if product.paginator.num_pages %}
  1. (可选)如果希望只有当总页数大于1时才显示分页控件,可以进一步修改为:
{% if product.paginator.num_pages > 1 %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:50:36