自定义分页
实用的功能没有解释
分页插件代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class CurrentPage(object): """ 这是一个分页插件 快速使用: CurrentPage(tota_num_page='数据的总个数',current_page="当前的页码",page_num="每一页展示的个数",button_page="页码的数量",upDown="是否有上一页和下一页",upDown="是否有首页和尾页") page_num 默认10条 button_page 默认选择页码为7条 upDown 默认没有上一页和下一页 startEnd 默认没有首页和尾页 """ def __init__(self,tota_num_page,current_page,page_num=10,button_page=7,upDown=False,startEnd=False): """ tota_num_page 数据的总个数 current_page 当前的页码 page_num 每一页展示的个数 button_page 页码的数量 upDown 是否有上一页和下一页 默认是False startEnd 是否有首页和尾页 默认是False """ self.upDown=upDown self.startEnd=startEnd self.tota_num_page=tota_num_page self.page_num=page_num self.button_page=button_page try: self.current_page=int(current_page) if self.current_page>self.num_pages: self.current_page=self.num_pages elif self.current_page<1: self.current_page=1 except Exception as e: print(e) self.current_page=1 def start(self): return (self.current_page-1)*self.page_num def end(self): return self.current_page*self.page_num @property def num_pages(self): s,r=divmod(self.tota_num_page,self.page_num) if not r==0: s=s+1 return s @property def page_num_list(self): if self.num_pages<self.button_page: return range(1,self.num_pages+1) pager=int(self.button_page/2) if pager>self.current_page: return range(1,self.button_page+1) if self.num_pages-pager<self.current_page: return range(self.num_pages-self.button_page+1,self.num_pages+1) return range(self.current_page-pager,self.current_page+pager+1) def page(self): l=[] if self.upDown: if self.startEnd: s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">首页</span></a></li>'%(1) l.append(s) if self.current_page==1: s='<li><a aria-label="Previous"><span aria-hidden="true">«</span></a></li>' else: s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'%(self.current_page-1) l.append(s) for p in self.page_num_list: s="<li><a href='?p=%s'>%s</a></li>"%(p,p) l.append(s) if self.current_page==self.num_pages: s='<li><a aria-label="Next"><span aria-hidden="true">»</span></a></li>' else: s='<li><a href="?p=%s" aria-label="Next"><span aria-hidden="true">»</span></a></li>'%(self.current_page+1) l.append(s) s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">尾页</span></a></li>'%(self.num_pages) l.append(s) else: if self.current_page==1: s='<li><a aria-label="Previous"><span aria-hidden="true">«</span></a></li>' else: s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'%(self.current_page-1) l.append(s) for p in self.page_num_list: s="<li><a href='?p=%s'>%s</a></li>"%(p,p) l.append(s) if self.current_page==self.num_pages: s='<li><a aria-label="Next"><span aria-hidden="true">»</span></a></li>' else: s='<li><a href="?p=%s" aria-label="Next"><span aria-hidden="true">»</span></a></li>'%(self.current_page+1) l.append(s) else: if self.startEnd: s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">首页</span></a></li>'%(1) l.append(s) for p in self.page_num_list: s="<li><a href='?p=%s'>%s</a></li>"%(p,p) l.append(s) s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">尾页</span></a></li>'%(self.num_pages) l.append(s) else: for p in self.page_num_list: s="<li><a href='?p=%s'>%s</a></li>"%(p,p) l.append(s) return "".join(l)
python运行代码 简单的使用
cp=CurrentPage(数据总个数,当前页码)
html中的使用 django的模板语法
{{cp.page|safe}}