python 换页_Python 分页功能

"""自定义分页组件的使用方法:

pager_obj = Pagination(request.GET.get('page',1),len(HOST_LIST),request.path_info,request.GET)

host_list = HOST_LIST[pager_obj.start:pager_obj.end]

html = pager_obj.page_html()

return render(request,'hosts.html',{'host_list':host_list,"page_html":html})"""

classPagination(object):"""自定义分页"""

def __init__(self,current_page,total_count,base_url,params,per_page_count=10,max_pager_count=11):try:

current_page=int(current_page)exceptException as e:

current_page= 1

if current_page <=0:

current_page= 1self.current_page=current_page#数据总条数

self.total_count =total_count#每页显示10条数据

self.per_page_count =per_page_count#页面上应该显示的最大页码

max_page_num, div =divmod(total_count, per_page_count)ifdiv:

max_page_num+= 1self.max_page_num=max_page_num#页面上默认显示11个页面(当前页在中间)

self.max_pager_count =max_pager_count

self.half_max_pager_count= int((max_pager_count - 1) / 2)#URL前缀

self.base_url =base_url#request.GET

importcopy

params=copy.deepcopy(params)

params._mutable=True#包含当前列表页面所有的搜索条件

#{source:[2,], status:[2], gender:[2],consultant:[1],page:[1]}

#self.params[page] = 8

#self.params.urlencode()

#source=2&status=2&gender=2&consultant=1&page=8

#href="/hosts/?source=2&status=2&gender=2&consultant=1&page=8"

#href="%s?%s" %(self.base_url,self.params.urlencode())

self.params =params

@propertydefstart(self):return (self.current_page - 1) *self.per_page_count

@propertydefend(self):return self.current_page *self.per_page_countdefpage_html(self):#如果总页数 <= 11

if self.max_page_num <=self.max_pager_count:

pager_start= 1pager_end=self.max_page_num#如果总页数 > 11

else:#如果当前页 <= 5

if self.current_page <=self.half_max_pager_count:

pager_start= 1pager_end=self.max_pager_countelse:#当前页 + 5 > 总页码

if (self.current_page + self.half_max_pager_count) >self.max_page_num:

pager_end=self.max_page_num

pager_start= self.max_page_num - self.max_pager_count + 1

else:

pager_start= self.current_page -self.half_max_pager_count

pager_end= self.current_page +self.half_max_pager_count

page_html_list=[]#{source:[2,], status:[2], gender:[2],consultant:[1],page:[1]}

self.params['page'] = 1first_page= '首页' %(self.base_url,self.params.urlencode(),)

page_html_list.append(first_page)#上一页

for i in range(pager_start, pager_end + 1):

self.params['page'] =iif i ==self.current_page:

temp= '%s' %(self.base_url,self.params.urlencode(), i,)else:

temp= '%s' %(self.base_url,self.params.urlencode(), i,)

page_html_list.append(temp)#下一页

self.params['page'] =self.max_page_num

last_page= '尾页' %(self.base_url, self.params.urlencode(),)

page_html_list.append(last_page)return ''.join(page_html_list)defbootstrap_page_html(self):#如果总页数 <= 11

if self.max_page_num <=self.max_pager_count:

pager_start= 1pager_end=self.max_page_num#如果总页数 > 11

else:#如果当前页 <= 5

if self.current_page <=self.half_max_pager_count:

pager_start= 1pager_end=self.max_pager_countelse:#当前页 + 5 > 总页码

if (self.current_page + self.half_max_pager_count) >self.max_page_num:

pager_end=self.max_page_num

pager_start= self.max_page_num - self.max_pager_count + 1

else:

pager_start= self.current_page -self.half_max_pager_count

pager_end= self.current_page +self.half_max_pager_count

page_html_list=[]#{source:[2,], status:[2], gender:[2],consultant:[1],page:[1]}

self.params['page'] = 1first_page= '

首页' %(self.base_url,self.params.urlencode(),)

page_html_list.append(first_page)#上一页

for i in range(pager_start, pager_end + 1):

self.params['page'] =iif i ==self.current_page:

temp= '

%s' %(self.base_url,self.params.urlencode(), i,)else:

temp= '

%s' %(self.base_url,self.params.urlencode(), i,)

page_html_list.append(temp)#下一页

self.params['page'] =self.max_page_num

last_page= '

尾页' %(self.base_url, self.params.urlencode(),)

page_html_list.append(last_page)return ''.join(page_html_list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值