如何在Django ListView中重置页码

时间:2017-01-20 05:03:34

标签: django

如何在Django ListView中重置页码。

有一个带过滤器形式的视图,结果是分页的。

例如: 第一个请求返回50页,我们来到40页。然后我们改变过滤器,结果只有10页。在网址中我们有第40页。我们得到404页,因为结果只有10页。

似乎我必须在' POST'时重定向到第一页。如何在ListView中制作它

1 个答案:

答案 0 :(得分:0)

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render

def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        contacts = paginator.page(page)
    except (PageNotAnInteger, EmptyPage):
        # If page is not an integer or out of range, deliver first page.
        contacts = paginator.page(1)

    return render(request, 'list.html', {'contacts': contacts})