SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
Список вопросов ПечатьМетки: python
RemiZOffAlex Создано: 2016-11-19 19:29:01.723634 Обновлено: 2016-11-19 19:29:01.723634 |
---|
Кодfrom math import ceil class Pagination(object): def __init__(self, page, per_page, total_count): self.page = page self.per_page = per_page self.total_count = total_count @property def pages(self): return int(ceil(self.total_count / float(self.per_page))) @property def has_prev(self): return self.page > 1 @property def has_next(self): return self.page < self.pages def iter_pages(self, left_edge=2, left_current=2, right_current=5, right_edge=2): last = 0 for num in xrange(1, self.pages + 1): if num <= left_edge or \ (num > self.page - left_current - 1 and \ num < self.page + right_current) or \ num > self.pages - right_edge: if last + 1 != num: yield None yield num last = num Рендеринг{% for page in pagination.iter_pages() %} {% if page %} <a href="/data?page={{ page }}">{{ page }}</a> {% else %} <span class=ellipsis>...</span> {% endif %} {% endfor %} Ссылки |