Показывать количество страниц в пагинации Джанго

Привет, всем!

Я пытаюсь выяснить, как показать что-то вроде "показ 1-10 из 52", используя разбиение на страницы django в моих шаблонах.

Я выполнил саму разбивку на страницы, но ничего не приходит мне в голову об этом требовании. Есть идеи?

4 ответов


не знаю, почему все так сильно усложнять. As документация показывает, что все эти атрибуты уже доступны.

объекты Paginator имеют


вам нужно будет сделать что-то умеренно более сложное за кулисами. И обратите внимание, что, хотя я разработчик python, я уже давно использую werkzeug и jinja2, поэтому мой синтаксис django немного ржавый. Также это было сухим кодом (как я только что набрал его здесь в браузере) и должно быть протестировано, чтобы убедиться, что он работает по назначению.

обычно я создаю объект разбиения на страницы и передаю его в объект запроса, который не фильтруется по страницам, вы также можете сказать это сколько на странице и на какой странице вы находитесь.

Так что-то смутно похожее на:

Paginator(query, objects_per_page, current_page_number)

и затем передайте полученный объект paginator в шаблон.

внутри пагинатора init вы хотите сделать что-то похожее на:

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]

тогда в шаблоне вы бы сделали что-то вроде

Showing {{paginator.lower_limit}}-{{paginator.upper_limit}} of {{paginator.total}}

и позже, когда вы будете готовы перебирать объекты, которые вы могли бы просто перебирать пагинатор.объекты.

Я надеюсь, что это даст вам общее представление о том, как вы можете это сделать.


в Django


totalPages = math.ceil(float(totalRecords)/recordsPerPage)

или

paginatorInstance.num_pages # this is there by default

это было не трудно, не так ли?