自定义分页
a.自定义分页(简约型)
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。project目录\utils\pager.py

class PageInfo(object): def __init__(self,current_page,all_count,per_page,base_url,show_page=11): """ :param current_page: :param all_count: 数据库总行数 :param per_page: 每页显示行数 :return: """ try: self.current_page=int(current_page) except Exception as e: self.current_page=1 self.per_page=per_page a,b=divmod(all_count,per_page) if b: a=a+1 self.all_pager=a self.show_page=show_page self.base_url=base_url def start(self): return (self.current_page-1)*self.per_page def end(self): return self.current_page*self.per_page def pager(self): # v="<a href='/custom.html?page=1'>1</a>" # return v page_list =[] half =int((self.show_page-1)/2) #如果数据总页数<11 if self.all_pager < self.show_page: begin=1 stop=self.all_pager+1 #如果数据总页数>11 else: # 如果当前页 《=5 永远显示1,11 if self.current_page<=half: begin=1 stop=self.show_page+1 else: if self.current_page+half >self.all_pager: begin=self.all_pager -self.show_page +1 stop =self.all_pager+1 else: begin=self.current_page -half stop =self.current_page +half+1 if self.current_page<= 1: prev="<a style='display:inline-block;padding:5px;margin:5px' href='#'>上一页</a>" else: prev="<a style='display:inline-block;padding:5px;margin:5px' href='%s?page=%s'>上一页</a>" % (self.base_url,self.current_page-1) page_list.append(prev) for i in range(begin,stop): if i==self.current_page: temp = "<a style='display:inline-block;padding:5px;background-color:lightgrey;margin:5px' href='%s?page=%s'>%s</a>" %(self.base_url,i,i,) else: temp = "<a style='display:inline-block;padding:5px;margin:5px' href='%s?page=%s'>%s</a>" %(self.base_url,i,i,) page_list.append(temp) if self.current_page>=self.all_pager: nex="<a style='display:inline-block;padding:5px;margin:5px' href='#'>下一页</a>" else: nex="<a style='display:inline-block;padding:5px;margin:5px' href='%s?page=%s'>下一页</a>" % (self.base_url,self.current_page+1) page_list.append(nex) return ''.join(page_list)View Code
views.py

from utils.pager import PagerInfo def custom(request): # 用户当前需要访问页码 all_count=models.UserInfo.objects.all().count() page_info=PageInfo(request.GET.get('page'),all_count,10,'/custom.html',11) user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()] return render(request,'custom.html',{'user_list':user_list,'page_info':page_info})View Code
html
{{ page_info.pager| safe }}
b.自定义分页(美化型 含bootstrap)
project目录\utils\pager.py

class PageInfo(object): def __init__(self,current_page,all_count,per_page,base_url,show_page=11): """ :param current_page: :param all_count: 数据库总行数 :param per_page: 每页显示行数 :return: """ try: self.current_page=int(current_page) except Exception as e: self.current_page=1 self.per_page=per_page a,b=divmod(all_count,per_page) if b: a=a+1 self.all_pager=a self.show_page=show_page self.base_url=base_url def start(self): return (self.current_page-1)*self.per_page def end(self): return self.current_page*self.per_page def pager(self): # v="<a href='/custom.html?page=1'>1</a>" # return v page_list =[] half =int((self.show_page-1)/2) #如果数据总页数<11 if self.all_pager < self.show_page: begin=1 stop=self.all_pager+1 #如果数据总页数>11 else: # 如果当前页 《=5 永远显示1,11 if self.current_page<=half: begin=1 stop=self.show_page+1 else: if self.current_page+half >self.all_pager: begin=self.all_pager -self.show_page +1 stop =self.all_pager+1 else: begin=self.current_page -half stop =self.current_page +half+1 if self.current_page<= 1: prev="<li><a href='#'>上一页</a></li>" else: prev="<li><a href='%s?page=%s'>上一页</a></li>" % (self.base_url,self.current_page-1) page_list.append(prev) for i in range(begin,stop): if i==self.current_page: temp = "<li class='active'><a href='%s?page=%s'>%s</a></li>" %(self.base_url,i,i,) else: temp = "<li><a href='%s?page=%s'>%s</a></li>" %(self.base_url,i,i,) page_list.append(temp) if self.current_page>=self.all_pager: nex="<li><a href='#'>下一页</a></li>" else: nex="<li><a href='%s?page=%s'>下一页</a></li>" % (self.base_url,self.current_page+1) page_list.append(nex) return ''.join(page_list)View Code
html
ps:/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css

<head> ... <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css" /> </head> <body> <h1>用户列表</h1> <ul> {% for row in user_list %} <li>{{ row.name }}</li> {% endfor %} </ul> <nav aria-label="Page navigation"> <ul class="pagination"> {{ page_info.pager|safe }} </ul> </nav> </body> </html>View Code

更多精彩