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

Django带搜索筛选的表格分页功能不显示,该如何排查?

问题根因

你的分页逻辑仅在无搜索请求的else分支中执行,当用户发起搜索、代码走入if分支时,返回的allusername是未经过分页器封装的原生Django QuerySet对象,不包含has_other_pages等分页属性,因此模板中{% if allusername.has_other_pages %}的判断永远为假,分页栏不会渲染。

修复方案

第一步:调整views.py逻辑,把分页逻辑提取到公共区域,无论是否搜索都执行分页

@login_required()
def ViewMCO(request):
    search_post = request.GET.get('q')
    if (search_post is not None) and search_post:
        allusername = Photo.objects.filter(Q(reception__icontains=search_post) | Q(partno__icontains=search_post) | Q(
            Customername__icontains=search_post) | Q(mcoNum__icontains=search_post) | Q(status__icontains=search_post)
                                           | Q(serialno__icontains=search_post))
        if not allusername:
            allusername = Photo.objects.all().order_by("-Datetime")
    else:
        allusername = Photo.objects.all().order_by("-Datetime")
    # 分页逻辑移到条件分支外,无论是否搜索都执行
    page = request.GET.get('page', 1)
    paginator = Paginator(allusername, 10)
    try:
        allusername = paginator.page(page)
    except PageNotAnInteger:
        allusername = paginator.page(1)
    except EmptyPage:
        allusername = paginator.page(paginator.num_pages)
    # 把搜索参数也传到模板,方便分页时携带
    context = {'allusername': allusername, 'q': search_post}
    return render(request, 'ViewMCO.html', context)

第二步:优化模板分页链接,携带搜索参数,避免点击分页后丢失搜索条件

把模板中所有分页的a标签链接修改为携带q参数:

{% if allusername.has_previous %}
  <li><a href="?q={{ q }}&page={{ allusername.previous_page_number }}">&laquo;</a></li>
{% else %}
  <li class="disabled"><span>&laquo;</span></li>
{% endif %}
{% for i in allusername.paginator.page_range %}
  {% if allusername.number == i %}
    <li class="active"><span>{{ i }} <span class="sr-only">(当前页)</span></span></li>
  {% else %}
    <li><a href="?q={{ q }}&page={{ i }}">{{ i }}</a></li>
  {% endif %}
{% endfor %}
{% if allusername.has_next %}
  <li><a href="?q={{ q }}&page={{ allusername.next_page_number }}">&raquo;</a></li>
{% else %}
  <li class="disabled"><span>&raquo;</span></li>
{% endif %}

修改后无论是否有搜索条件,分页栏都会正常渲染,且分页跳转时不会丢失已输入的搜索内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:06:03