Я новичок в Django, поэтому я застрял в нумерации на основе классов, и я следил за многими постами о нумерации страниц, но, к сожалению, не смог решить эту ошибку.
, если я ищу "love" в окне поискапоэтому 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
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')