Django 我有一个搜索函数,它可以呈现另一个带有搜索结果的页面,我在这个函数中实现了分页,但它显示了一个错误

Django 我有一个搜索函数,它可以呈现另一个带有搜索结果的页面,我在这个函数中实现了分页,但它显示了一个错误,django,pagination,Django,Pagination,我有一个名为“命名搜索\用户”的视图函数,当我键入要搜索的内容时,它会显示结果,但当我在搜索后单击下一页时,它会显示valueerror(例如,返回none) views.py def search_user(request): query = request.GET.get("q") context ={} if query: users = User.objects.filter(Q(username__icontains=quer

我有一个名为“命名搜索\用户”的视图函数,当我键入要搜索的内容时,它会显示结果,但当我在搜索后单击下一页时,它会显示valueerror(例如,返回none)

views.py

def search_user(request):
    query = request.GET.get("q")
    context ={}
    if query:
        users = User.objects.filter(Q(username__icontains=query))
        if users:
            page = request.GET.get('page', 1)
            paginator = Paginator(users, 1)
            try:
                users = paginator.page(page)
            except PageNotAnInteger:
                users = paginator.page(1)
            except EmptyPage:
                users = paginator.page(paginator.num_pages)
            context={'users': users}
            return render(request,'user/search.html',context)
        else:
            messages.warning(request,'User matching query does not exist.')
            return redirect('acc_req_list')
形式


搜寻
search.html

   {% if users.has_other_pages %}
    <ul class="pagination">
      {% if users.has_previous %}
        <li class="page-item active">
            <a class="page-link" href="?page={{ users.previous_page_number }}">pre</a>
        </li>
      {% else %}
        <li class="page-item disabled"><span></span></li>
      {% endif %}
      {% for i in users.paginator.page_range %}
        {% if users.number == i %}
          <li class="page-item"><span style="z-index: 1; position: relative; display: block;padding: 0.5rem 0.75rem; margin-left: -1px; line-height: 1.25; color: #f7efef; background-color: #F64E60; border: 1px solid #E4E6EF;">{{ i }} <span class="sr-only" >(current)</span></span></li>
        {% else %}
          <li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
        {% endif %}
      {% endfor %}
      {% if users.has_next %}
        <li class="page-item active">
            <a class="page-link" href="?page={{ users.next_page_number }}">Next</a>
        </li>
      {% else %}
        <li class="page-item disabled"><span></span></li>
      {% endif %}
    </ul>
{% endif %}
{%if users.has_other_pages%}
    {%if users.has_previous%}
  • {%else%}
  • {%endif%} {users.paginator.page_range%} {%if users.number==i%}
  • {{i}(当前)
  • {%else%}
  • {%endif%} {%endfor%} {%if users.has_next%}
  • {%else%}
  • {%endif%}
{%endif%}


如果query==False,则返回内容

def search_user(request):
    query = request.GET.get("q")
    context ={}
    if query:
        users = User.objects.filter(Q(username__icontains=query))
        if users:
            page = request.GET.get('page', 1)
            paginator = Paginator(users, 1)
            try:
                users = paginator.page(page)
            except PageNotAnInteger:
                users = paginator.page(1)
            except EmptyPage:
                users = paginator.page(paginator.num_pages)
            context={'users': users}
            return render(request,'user/search.html',context)
        else:
            messages.warning(request,'User matching query does not exist.')
            return redirect('acc_req_list')
    else:
        return redirect('URL')
更新: search.html

def search_user(request):
    query = request.GET.get("q")
    context ={}
    if query:
        users = User.objects.filter(Q(username__icontains=query))
        if users:
            page = request.GET.get('page', 1)
            paginator = Paginator(users, 1)
            try:
                users = paginator.page(page)
            except PageNotAnInteger:
                users = paginator.page(1)
            except EmptyPage:
                users = paginator.page(paginator.num_pages)
            context={'users': users}
            return render(request,'user/search.html',context)
        else:
            messages.warning(request,'User matching query does not exist.')
            return redirect('acc_req_list')
    else:
        return redirect('URL')
Passq={{request.GET.q}

    {% if users.has_other_pages %}
        <ul class="pagination">
          {% if users.has_previous %}
            <li class="page-item active">               
     ➡➡➡➡<a class="page-link" href="?page={{ users.previous_page_number }}&q={{ request.GET.q }}">pre</a>
            </li>
          {% else %}
            <li class="page-item disabled"><span></span></li>
          {% endif %}
          {% for i in users.paginator.page_range %}
            {% if users.number == i %}
              <li class="page-item"><span style="z-index: 1; position: relative; display: block;padding: 0.5rem 0.75rem; margin-left: -1px; line-height: 1.25; color: #f7efef; background-color: #F64E60; border: 1px solid #E4E6EF;">{{ i }} <span class="sr-only" >(current)</span></span></li>
            {% else %}
     ➡➡➡➡<li class="page-item"><a class="page-link" href="?page={{ i }}&q={{ request.GET.q }}">{{ i }}</a></li>
            {% endif %}
          {% endfor %}
          {% if users.has_next %}
            <li class="page-item active">
     ➡➡➡➡<a class="page-link" href="?page={{ users.next_page_number }}&q={{ request.GET.q }}">Next</a>
            </li>
          {% else %}
            <li class="page-item disabled"><span></span></li>
          {% endif %}
        </ul>
    {% endif %}
{%if users.has_other_pages%}
    {%if users.has_previous%}
  • ➡➡➡➡
  • {%else%}
  • {%endif%} {users.paginator.page_range%} {%if users.number==i%}
  • {{i}(当前)
  • {%else%} ➡➡➡➡
  • {%endif%} {%endfor%} {%if users.has_next%}
  • ➡➡➡➡
  • {%else%}
  • {%endif%}
{%endif%}
如果查询:计算结果为
False
,您还没有返回任何case
中的响应。请您解释一下如果查询计算结果为False,逻辑会是什么。但是如果我重定向到其他url,我将如何进行分页。我需要从该结果页面进行分页Hello@ZahidHassan plz查看我的更新答案。这很有效太好了。非常感谢你。你是老板。你太棒了,我爱你,但你能解释一下你是如何得到这种逻辑的吗?非常欢迎@ZahidHassan。当您按<代码>下< /COD>或<代码>以前< /代码>链接时,您过去的查询PAR。他走了。所以我思考如何保持过去的代码>获取< /Cord>查询PAR。然后我把这个应用到我的upd上。回答我过去的项目和它的工作…好的,好的,谢谢你的人。:)