当前位置: 首页 > 知识库问答 >
问题:

Listview分页工作不正常django

皇甫智明
2023-03-14

我是Django初学者,所以我被困在基于类的分页中,我已经关注了很多关于分页的帖子,但不幸的是,我无法解决这个错误。

如果我在搜索框中搜索“爱”,URL就会变成这样

http://127.0.0.1:8000/search/?q=love

结果显示了分页功能,但当我点击下一个分页按钮时,查询get remove,url变成这样

http://127.0.0.1:8000/search/?page=2

错误提示:无效页面(2):该页面不包含任何结果

谁能告诉我哪里错了?谢谢

Views.py

from django.views import generic
from .models import Album, Song
from django.db.models import Q

class Search(generic.ListView):
    template_name = 'music/search.html'
    paginate_by = 5  

    def get_queryset(self, *args, **kwargs):
        queryset_list = Song.objects.all()
        query = self.request.GET.get('q')
        if query:
            queryset_list = queryset_list.filter(
                Q(song_title__icontains=query)|
                Q(file_type__icontains=query)
                ).distinct()
        if not query:
            queryset_list = Song.objects.none()
            return queryset_list
        return queryset_list

搜索html

{% if object_list %}
    <h1>Search result..</h1>
    {% for i in object_list %}
        <p>{{i.song_title}}</p>
    {% endfor %}

    <!-- pagination-->
    {% if is_paginated %}
          <ul class="pagination">
            {% if page_obj.has_previous %}
              <li><a href="?page={{ page_obj.previous_page_number }}">&laquo;</a></li>
            {% else %}
              <li class="disabled"><span>&laquo;</span></li>
            {% endif %}
            {% for i in paginator.page_range %}
              {% if page_obj.number == i %}
                <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
              {% else %}
                <li><a href="?page={{ i }}">{{ i }}</a></li>
              {% endif %}
            {% endfor %}
            {% if page_obj.has_next %}
              <li><a href="?page={{ page_obj.next_page_number }}">&raquo;</a></li>
            {% else %}
              <li class="disabled"><span>&raquo;</span></li>
            {% endif %}
          </ul>
    {% endif %}
    <!-- end pagination-->

{% else %}
    <h1>no result found..</h1>
{% endif %}

urls.py

from django.conf.urls import url
from music import views

url(r'^search/$', views.Search.as_view(), name='search')

共有1个答案

皇甫伟彦
2023-03-14

您没有在链接中包含您的搜索词,因此您可以看到URL不包含它,因此get_queryset返回一个空集。你应该确保你在任何地方都包括它:

<a href="?q={{ request.GET.q }}&page={{ page_obj.previous_page_number }}">

所有其他链接也是如此。

 类似资料:
  • 第一wp_query后WordPress分页不工作。我正在对第一个wp_query对象返回的数据执行一些操作。但是在第二次查询之后,分页不起作用。 我尝试从其中一个查询中删除“paged”参数,该参数要么给出错误的结果,要么没有分页。例如,此查询第一次返回28个结果,但第二次查询后仅返回6个结果。如果我从第一个查询中删除'paged'参数并将其添加到第二个查询中,那么当它应该返回3页时,只返回一页

  • 我正在为listview的每个Iten使用listview实现复选框。我遇到的问题是,当我点击任何一个复选框时,当我滚动时,其他一些没有点击的复选框也会被随机点击。我在SO上通过了许多链接,但它并没有解决我的问题。 我的xml文件是

  • 我在数据服务器端处理中的代码有问题。问题在于分页。我的数据给我3页,但只有第一次点击分页工作的数字(不管我点击了什么数字)。在此之后,任何数量的任何点击都只会使表格内容闪烁。表中没有任何变化。 谁能帮我提些建议做什么?非常感谢。 编辑: 刚刚修好了。请核对答案。 我的代码:

  • 我使用了绝对定位(setBounds和null布局),现在开始练习布局管理器,这段代码是用gridbag布局的,但是很少组件没有显示,或者是单元格有一些问题,或者是其他的东西,请帮助!

  • 我试图创建一个基于警报的应用程序。我正在使用。问题是这一点都不可靠。在某些设备中,它起作用…在其他设备中,它的工作方式…而在其他设备中,它根本不起作用。 这是我的闹钟课: 这是我的OneTimeAlarm,只发射一次就不再发射的警报。 这是我的日常警报器,警报器一天只响一次。

  • 我正在使用ora2pg将我的数据从oracle迁移到postgres数据库。作为第一步,我要导出模式。我发现生成的sql文件有许多错误,如重复的sql语句,函数中的重复参数,这些错误在执行sql时失败。我正在尝试手动更正生成的sql文件中的这些错误。是否有更好的方法或避免sql文件中的此错误。实际上,我只需要将数据从oracle传输到postgres数据库。但不知道这是否可能。我使用的是ORA2P