【发布时间】:2018-10-27 10:25:15
【问题描述】:
我是 Django 初学者,所以我被困在基于类的分页中,我关注了很多关于分页的帖子,但不幸的是无法解决这个错误。
如果我在搜索框中搜索“爱”,那么 URL 就会变成这样
结果显示带有分页功能,但是当我点击下一个分页按钮时,查询获取删除和 url 变成这样
并引发错误:无效页面 (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
search.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 }}">«</a></li>
{% else %}
<li class="disabled"><span>«</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 }}">»</a></li>
{% else %}
<li class="disabled"><span>»</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')
【问题讨论】:
标签: django python-2.7 pagination