PaginatorLink to this heading
Django tillhandahåller några klasser som hjälper dig att hantera paginerad data - det vill säga data som är uppdelad på flera sidor, med ”Föregående/Nästa”-länkar. Dessa klasser finns i django/core/paginator.py.
För exempel, se Pagination topic guide.
klassen PaginatorLink to this heading
- class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True, error_messages=None)Link to this definition
En paginator fungerar som en sekvens av
Pagenär du använderlen()eller itererar den direkt.
- Paginator.object_listLink to this definition
Krävs. En lista, tupel,
QuerySeteller annat objekt som kan skäras med encount()eller__len__()metod. För konsekvent paginering börQuerySetbeställas, t.ex. med enorder_by()klausul eller med en standardorderingpå modellen.
- Paginator.per_pageLink to this definition
Obligatoriskt. Det maximala antalet objekt som ska inkluderas på en sida, exklusive föräldralösa barn (se det valfria argumentet
orphansnedan).
- Paginator.orphansLink to this definition
Optional. Use this when you don’t want to have a last page with very few items. If the last page would normally have a number of items less than or equal to
orphans, then those items will be added to the previous page (which becomes the last page) instead of leaving the items on a page by themselves. For example, with 23 items,per_page=10, andorphans=3, there will be two pages; the first page with 10 items and the second (and last) page with 13 items.orphansdefaults to zero, which means pages are never combined and the last page may have one item.orphansshould be less than theper_pagevalue.
- Paginator.allow_empty_first_pageLink to this definition
Optional. Whether or not the first page is allowed to be empty. If
Falseandobject_listis empty, then anEmptyPageerror will be raised.
- Paginator.error_messagesLink to this definition
Med argumentet
error_messageskan du åsidosätta de standardmeddelanden som paginatorn kommer att ge. Skicka in en ordbok med nycklar som matchar de felmeddelanden som du vill åsidosätta. Tillgängliga nycklar för felmeddelanden är:invalid_page,min_pageochno_results.Här är till exempel standardfelmeddelandet:
>>> from django.core.paginator import Paginator >>> paginator = Paginator([1, 2, 3], 2) >>> paginator.page(5) Traceback (most recent call last): ... EmptyPage: That page contains no resultsOch här är ett anpassat felmeddelande:
>>> paginator = Paginator( ... [1, 2, 3], ... 2, ... error_messages={"no_results": "Page does not exist"}, ... ) >>> paginator.page(5) Traceback (most recent call last): ... EmptyPage: Page does not exist
MetoderLink to this heading
- Paginator.get_page(number)Link to this definition
Returnerar ett
Page-objekt med det angivna 1-baserade indexet och hanterar även sidnummer utanför intervallet och ogiltiga sidnummer.Om sidan inte är en siffra returneras den första sidan. Om sidnumret är negativt eller större än antalet sidor, returneras den sista sidan.
Utlöser ett
EmptyPage-undantag endast om du angerPaginator(..., allow_empty_first_page=False)ochobject_listär tom.
- Paginator.page(number)Link to this definition
Returnerar ett
Page-objekt med det angivna 1-baserade indexet. UtlöserPageNotAnIntegeromnumberinte kan konverteras till ett heltal genom att anropaint(). RaisesEmptyPageom det angivna sidnumret inte existerar.
- Paginator.get_elided_page_range(number, *, on_each_side=3, on_ends=2)Link to this definition
Returnerar en 1-baserad lista med sidnummer som liknar
Paginator.page_range, men kan lägga till en ellips på endera eller båda sidorna av det aktuella sidnumret omPaginator.num_pagesär stort.Antalet sidor som ska inkluderas på varje sida av det aktuella sidnumret bestäms av argumentet
on_each_side, som har standardvärdet 3.Antalet sidor som ska inkluderas i början och slutet av sidintervallet bestäms av argumentet
on_ends, som har standardvärdet 2.Med standardvärdena för
på_varje_sidaochpå_slutblir till exempel sidintervallet[1, 2, '...', 7, 8, 9, 10, 11, 12, 13, '...', 49, 50]om den aktuella sidan är 10 och det finns 50 sidor. Detta resulterar i sidorna 7, 8 och 9 till vänster om och 11, 12 och 13 till höger om den aktuella sidan samt sidorna 1 och 2 i början och 49 och 50 i slutet.Utlöser
InvalidPageom det angivna sidnumret inte existerar.
AttributLink to this heading
- Paginator.ELLIPSISLink to this definition
En översättningsbar sträng som används som ersättning för sidnummer i sidintervallet som returneras av
get_elided_page_range(). Standard är...'.
- Paginator.countLink to this definition
Det totala antalet objekt på alla sidor.
- Paginator.num_pagesLink to this definition
Det totala antalet sidor.
- Paginator.page_rangeLink to this definition
En 1-baserad intervalliterator för sidnummer, som t.ex. ger
[1, 2, 3, 4].
AsyncPaginator classLink to this heading
- class AsyncPaginator(object_list, per_page, orphans=0, allow_empty_first_page=True, error_messages=None)Link to this definition
Asynchronous version of
Paginator.AsyncPaginatorhas the same attributes and signatures asPaginator, with the following exceptions:The attribute
Paginator.countis supported as an asynchronous methodAsyncPaginator.acount().The attribute
Paginator.num_pagesis supported as an asynchronous methodAsyncPaginator.anum_pages().The attribute
Paginator.page_rangeis supported as an asynchronous methodAsyncPaginator.apage_range().
AsyncPaginatorhas asynchronous versions of the same methods asPaginator, using anaprefix - for example, useawait async_paginator.aget_page(number)rather thanpaginator.get_page(number).
klass PageLink to this heading
Du konstruerar vanligtvis inte Page-objekt för hand - du får dem genom att iterera Paginator, eller genom att använda Paginator.page().
- class Page(object_list, number, paginator)Link to this definition
En sida fungerar som en sekvens av
Page.object_listnär man använderlen()eller itererar den direkt.
MetoderLink to this heading
- Page.has_next()Link to this definition
Returnerar
Trueom det finns en nästa sida.
- Page.has_previous()Link to this definition
Returnerar
Trueom det finns en föregående sida.
- Page.has_other_pages()Link to this definition
Returnerar
Trueom det finns en nästa eller föregående sida.
- Page.next_page_number()Link to this definition
Returnerar nästa sidnummer. Utlöser
InvalidPageom nästa sida inte finns.
- Page.previous_page_number()Link to this definition
Returnerar föregående sidnummer. Utlöser
InvalidPageom föregående sida inte finns.
- Page.start_index()Link to this definition
Returnerar det 1-baserade indexet för det första objektet på sidan, i förhållande till alla objekt i paginatorns lista. Till exempel:, vid paginering av en lista med 5 objekt med 2 objekt per sida, skulle den andra sidans
start_index()returnera3.
- Page.end_index()Link to this definition
Returnerar det 1-baserade indexet för det sista objektet på sidan, i förhållande till alla objekt i paginatorns lista. Till exempel:, vid paginering av en lista med 5 objekt med 2 objekt per sida, skulle den andra sidans
end_index()returnera4.
AttributLink to this heading
- Page.object_listLink to this definition
Listan över objekt på den här sidan.
- Page.numberLink to this definition
Det 1-baserade sidnumret för den här sidan.
- Page.paginatorLink to this definition
Det associerade
Paginator-objektet.
AsyncPage classLink to this heading
- class AsyncPage(object_list, number, paginator)Link to this definition
Asynchronous version of
Page.AsyncPagehas the same attributes and signatures asPage, as well as asynchronous versions of all the same methods, using anaprefix - for example, useawait async_page.ahas_next()rather thanpage.has_next().AsyncPagehas the following additional method:- aget_object_list()Link to this definition
Returns
AsyncPage.object_listas a list. This method must be awaited beforeAsyncPagecan be treated as a sequence ofAsyncPage.object_list.
UndantagLink to this heading
- exception InvalidPageLink to this definition
En basklass för undantag som uppstår när en paginator får ett ogiltigt sidnummer.
Metoden Paginator.page() ger upphov till ett undantag om den begärda sidan är ogiltig (dvs. inte ett heltal) eller inte innehåller några objekt. I allmänhet räcker det med att fånga undantaget InvalidPage, men om du vill ha mer detaljerad information kan du fånga något av följande undantag:
- exception PageNotAnIntegerLink to this definition
Uppstår när
page()ges ett värde som inte är ett heltal.
- exception EmptyPageLink to this definition
Utlöses när
page()ges ett giltigt värde men inga objekt finns på den sidan.
Båda undantagen är subklasser av InvalidPage, så du kan hantera dem båda med except InvalidPage.