自己编写的分页器:
1、大概思路:分页功能实际上实现的就是改变显示内容,没有改变页面。我们通过切片从数据库中获取想要的数据,比如你要一页显示十条内容,那么第一页的数据范围就是[0, 10],第二页就是[10, 20],我们可以通过得到的当前页的页码来计算数据范围。
class PageInfo(object): # 传入当前页、总数据条数、每一页打算呈现的数据数量、打算显示多少个页码 def __init__(self, current_page, count, per_page, show_page): try: self.current_page = int(current_page) #判断选择的当前页是不是数字,不是则默认为第一页 except Exception as e: self.current_page = 1 self.per_page = per_page #将打算显示的数据数量复制给这个类的属性 a, b = divmod(count, per_page) #divmod这个函数会返回(整数,余数) if b: #判断余数是否为0 a += 1 #余数不为0.则需要再加一页 self.page_counter = a self.show_page = show_page def start(self): return (self.current_page - 1) * self.per_page #返回从第几条开始获取数据 def end(self): return self.current_page * self.per_page #返回在第几条结束获取数据 def pageer(self): page_list = [] if self.page_counter < self.show_page: if self.page_counter >= 1: temp = '<li><a href="/message/%s.html/">首页</a></li>' % (1,) else: temp = '<li><a href="">首页</a></li>' page_list.append(temp) for i in range(1, self.page_counter + 1): if self.current_page == i: temp = '<li class="active"><a href="/message/%s.html/">%s</a></li>' % (i, i) else: temp = '<li><a href="/message/%s.html/">%s</a></li>' % (i, i) page_list.append(temp) if self.page_counter >= 1: temp = '<li><a href="/message/%s.html/">尾页</a></li>' % (self.page_counter) else: temp = '<li><a href="">尾页</a></li>' page_list.append(temp) else: half = (self.show_page - 1) / 2 half = int(half) start = 1 end = self.show_page + 1 if self.current_page > half: start = self.current_page - half end = self.current_page + half + 1 if self.current_page > self.page_counter - half: start = self.page_counter - self.show_page + 1 end = self.page_counter + 1 if self.page_counter >= 1: temp = '<li><a href="/message/%s.html/">首页</a></li>' % (1,) else: temp = '<li><a href="">首页</a></li>' page_list.append(temp) for i in range(start, end): if self.current_page == i: temp = '<li class="active"><a href="/message/%s.html/">%s</a></li>' % (i, i) else: temp = '<li><a href="/message/%s.html/">%s</a></li>' % (i, i) page_list.append(temp) if self.page_counter >= 1: temp = '<li><a href="/message/%s.html/">尾页</a></li>' % (self.page_counter) else: temp = '<li><a href="">尾页</a></li>' page_list.append(temp) return ''.join(page_list)
2、上述代码的解释:上述代码中传入了当前页面的号码,还有数据库中的数据量,每页你要显示的数据量,以及分页器中你要显示的分页数。