2015-06-08 64 views
1

我想在django項目中實現分頁。在Django中更有效的分頁方式

我看着default django paginator,發現這個例子:

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: 
     # If page is not an integer, deliver first page. 
     contacts = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     contacts = paginator.page(paginator.num_pages) 

    return render_to_response('list.html', {"contacts": contacts}) 

它看起來像它會從數據庫中所有對象和所需的人返回到模板。

這不是很有效嗎?我也看着django-endless-pagination這似乎很難定製。

我找的,我將它haystackelasticsearch

我還能用輕鬆集成定製的解決方案?

+2

Paginator沒有得到所有的對象https://github.com/django/django/blob/master/django/core/paginator.py#L55 – f43d65

+0

@ f43d65,當然哦!請將其寫爲答案,以便我可以接受。謝謝 –

回答

2

Paginator不會獲取所有對象。就你的情況而言,你要求提供25個對象。因此,每個頁面將包含25個對象。當您嘗試訪問下一頁時,會發送一個新的數據庫請求以訪問對象26-50。