我一直在我的几个页面中使用 django 内置分页(is_pagination)。他们都工作得很好。除了搜索页面外,分页应该仅根据过滤后的查询集显示。
我已经检查了其他一些线程,但没有多大帮助。
如何使用基于 Django 类的通用 ListView 的分页?
这是我迄今为止所拥有的迷你版本:-
1)视图.py
class SearchBookView(ListView):
template_name = 'books/search_book.html'
paginate_by = '2'
context_object_name = 'book'
form_class = SearchBookForm
def get(self, request):
form = self.form_class(request.GET or None)
if form.is_valid():
filtered_books = self.get_queryset(form)
context = {
'form' : form,
'book' : filtered_books,
}
else:
context = {'form': form}
return render(request, self.template_name, context)
def get_queryset(self, form):
filtered_books = Book.objects.all()
if form.cleaned_data['title'] != "":
filtered_books = filtered_books.filter(
title__icontains=form.cleaned_data['title'])
return filtered_books
def get_context_data(self):
context = super(SearchBookView, self).get_context_data() …Run Code Online (Sandbox Code Playgroud)