2017-01-20 39 views
0

如何在Django ListView中重置頁碼。如何在Django ListView中重置頁碼

有一個篩選窗體視圖,結果分頁。

例如: 首先請求返回50頁,我們來到40頁。然後我們改變過濾器,結果只有10頁。在url中,我們有頁碼40.我們得到404頁面,因爲結果只有10頁。

似乎我'POST'時必須重定向到第一頁。如何使它在ListView控件

+0

教程的Django的是你的朋友:) [教程](https://docs.djangoproject.com/en/1.10/topics/pagination/#using-paginator-in-a -視圖)。如果頁面超出範圍,請提供結果的最後一頁。您可以更新此代碼以返回到第一頁,請參閱我的答案。 – Wilfried

回答

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})