Musisz zrobić coś bardziej skomplikowanego za kulisami. I proszę zauważyć, że póki ja jestem deweloperem Pythona, używam werkzeug i jinja2 od dłuższego czasu, więc moja składnia django jest trochę zardzewiała. Również to zostało zakodowane na sucho (jak w tym po prostu wpisałem to tutaj w przeglądarce) i powinno być przetestowane, aby upewnić się, że działa zgodnie z przeznaczeniem.
Generalnie utworzę obiekt paginacji i przekazać go do obiektu zapytania, który nie jest filtrowany przez strony, można również określić liczbę stron i stronę, na której się znajdujesz.
Więc coś niejasno podobny do:
Paginator(query, objects_per_page, current_page_number)
a następnie przekazać obiekt wynikowy paginator do szablonu.
wewnątrz paginator za init, że chcesz zrobić coś podobnego do:
def __init__(self, query, objects_per_page, current_page_number):
self.total = query.count()
self.per_page = objects_per_page
self.current_page_number = current_page_number
self.lower_limit = objects_per_page * current_page_number
self.upper_limit = objects_per_page * (current_page_number + 1)
if self.upper_limit > self.total:
self.upper_limit = self.total
self.objects = query[self.lower_limit - 1:self.upper_limit - 1]
Następnie w szablonie chcesz zrobić coś
Showing {{paginator.lower_limit}}-{{paginator.upper_limit}} of {{paginator.total}}
A później, gdy jesteś gotowy iterować po obiektach, które można po prostu przetworzyć za pomocą paginator.objects.
Mam nadzieję, że daje to ogólne pojęcie o tym, jak można to czynić w prosty sposób.
whoa! to jest dokładnie to, czego szukałem. dzięki! – webgonewild
To było bardzo pomocne - dzięki. Mam tylko jedną uwagę, że domyślnie w 'ListView' obiekt nazywa się' page_obj', a nie 'page'. – BigglesZX