分页测试处理

文件1(导入文件2)

users=[{'name':'xxx{}'.format(i),'pwd':'aaa{}'.format(i)}for i in range(1,80)]

def user_list(request):
page=Pagination(request,len(users))

return render(request, 'user_list.html',
{'data': users[page.start:page.end],
'pagination': page.show_li
}
)

文件2

from django.utils.safestring import mark_safe
from django.http import QueryDict

class Pagination:
def __init__(self,request,all_count,query_params=QueryDict(),per_num=10, max_show=11):
self.base_url=request.path_info
self.query_params=query_params
self.query_params._mutable=True
try:
self.current_page=int(request.GET.get('page',1))

if self.current_page<=0:
self.current_page=1
except Exception as e:
self.current_page=1
self.max_show=max_show
half_show=max_show//2
self.per_num=per_num
self.all_count=all_count
self.total_num,more=divmod(all_count,per_num)

if more:
self.total_num +=1
if self.total_num<max_show:
self.page_start=1
self.page_end=self.total_num

else:
if self.current_page<=half_show:
self.page_start=1
self.page_end=max_show

elif self.current_page +half_show >=self.total_num:
self.page_end = self.total_num
self.page_start=self.total_num -max_show +1
else:
self.page_start=self.current_page - half_show
self.page_end=self.current_page +half_show

@property
def start(self):
return (self.current_page - 1) * self.per_num
@property
def end(self):
return self.current_page * self.per_num
@property
def show_li(self):
html_list = []
self.query_params['page']=1
first_li = '<li><a href="{}?{}">首页</a></li>'.format(self.base_url,self.query_params.urlencode())
html_list.append(first_li)

if self.current_page == 1:
prev_li = '<li class="disabled"><a><<</a></li>'

else:
self.query_params['page']=self.current_page - 1
prev_li = '<li><a href="{0}?{1}"><<</a></li>'.format(self.base_url,self.query_params.urlencode())
html_list.append(prev_li)


for num in range(self.page_start, self.page_end + 1):

self.query_params['page'] =num
if self.current_page == num:
li_html = '<li class="active"><a href="{0}?{1}">{2}</a></li>'.format(self.base_url,self.query_params.urlencode(),num)

else:
li_html = '<li ><a href="{0}?{1}">{2}</a></li>'.format(self.base_url,self.query_params.urlencode(),num)
html_list.append(li_html)


if self.current_page == self.total_num:
next_li = '<li class="disabled"><a>>></a></li>'

else:
self.query_params['page'] =self.current_page + 1
next_li = '<li><a href="{0}?{1}">>></a></li>'.format(self.base_url,self.query_params.urlencode())
html_list.append(next_li)
self.query_params['page'] = self.total_num

last_li = '<li><a href="{}?{}">尾页</a></li>'.format(self.base_url,self.query_params.urlencode())
html_list.append(last_li)
return mark_safe(''.join(html_list))





















猜你喜欢

转载自www.cnblogs.com/xdlzs/p/10729678.html