weitere Scripte
|
Pfad:
Python > Webscripte > Django
Google-Style Pagination für Django
Django bietet in seinem Standard-Paginator lediglich rudimentäre Möglichkeiten, die für eine zeitgemäße Pagination nicht ausreichen, sofern man sich nur auf diese Möglichkeiten stützt.
Es gibt mehrere Lösungsansätze wie die Digg-Style-Pagination, die mir persönlich allesamt wenig zusagen.
Eine Google-Style-Pagination war das, was ich gesucht habe – und nicht gefunden.

Google-like Pagination mit etwas mehr Style.
Die Funktion »page-nav« berechnet nur zwei Listen, die die Seitenzahlen vor und hinter der aktuellen Seite halten.
def page_nav(current, last, buffer):
mb = 2*buffer
vor = min(current-1, max(mb-min(buffer, last-current), buffer))
nach = min(last-current, max(mb-min(buffer, current-1), buffer))
vor_liste = [n+current-vor for n in range(vor)]
nach_liste = [n+current+1 for n in range(nach)]
return vor_liste, nach_liste
Die Funktion braucht drei Argumente.
current: die aktuelle Seite, aus objekt.number
last: die letzte Seite, aus paginator.num_pages
buffer: Anzahl von gelieferten Seiten vor und nach der aktuellen
Beispiel
Bei einem Aufruf
vor, nach = page_nav(9, 20, 4)
steht in vor [5,6,7,8] und in nach [10,11,12,13]
Siehe Bild oben.
Bei einem Aufruf
vor, nach = page_nav(3, 20, 4)
steht in vor [1,2] und in nach [4,5,6,7,8,9]
Alles, was vorne nicht passt, wird hinten draufgerechnet (und umgekehrt), so dass nach Möglichkeit die Länge der Navigation gleich bleibt.
Diese Listen werden mit
tels responsedict an das Template übergeben.
Eingebaut ist diese Google-Style-Pagination zum Beispiel bei Blog über Waschmaschinen
Ihr könnt selbst ausprobieren wie es sich anfühlt.
© MediaDialog Topolewski Bielefeld | Python by Nooto.de
|