By
Vika Zhou
更新日期:
文章目录
原始发布于: http://blog.viifly.com/blog/posts/5798429187899392
直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Pager(object): win_size = 4 def __init__(self, total, page_no=1, page_size=15): self.total_records = total self.total_page = self.get_page_count(total, page_size) self.page_size = page_size self.page_no = 1 if page_no < 1 else min(page_no, self.total_page) page_win_no = self.get_page_count(self.page_no, self.win_size) self.page_win = range((page_win_no-1)*self.win_size +1, min(self.total_page, page_win_no * self.win_size)+1) self.record_range = ((self.page_no-1)*self.page_size + 1, min(self.total_records, self.page_no*self.page_size))
def get_page_count(self, total, page_size): return total/page_size + (1 if total % page_size > 0 else 0)
|
使用时,只需传递记录总数和当前页数,如pager = Pager(100,2)
。
下面是使用Jinja2时template代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| {% if pager %} <div> {% if pager.page_no > 1 %}<a href="?page={{ pager.page_no-1 }}">Previous</a>{% endif %} {% for p in pager.page_win %} {% if p == pager.page_no %} <span>{{ p }}</span> {% else %} <a href="?page={{ p }}">{{ p }}</a> {% endif %} {% endfor %} ({{ pager.record_range[0] }}-{{ pager.record_range[1] }}/{{ pager.total_records }}) {% if pager.page_no < pager.total_page %}<a href="?page={{ pager.page_no + 1}}">Next</a>{% endif %} </div> {% endif %}
|
效果如下: