
page_data.pyfrom django.utils.safestring import mark_safe from copy import deepcopy class PageData: def __init__(self,request,queryset,page_size1,page_num3,page_parampage): request:请求 queryset:数据表的查询结果 pagesize:一页显示多少条数据 page_num:当前页面显示多少个页码 page_param:翻页参数 get_query_dictdeepcopy(request.GET) self.query_dictget_query_dict self.page_parampage_param pagerequest.GET.get(page_param,1) if page.isdecimal(): pageint(page) else: page1 self.pagepage self.start(page-1)*page_size self.endpage*page_size self.page_queryset queryset[self.start:self.end] page_count queryset.count() #一共要显示多少页 page_count, yushu divmod(page_count, page_size) if yushu: page_count 1 self.page_countpage_count self.page_numpage_num def page_html(self): # 判断数据表当中的数据总共能否展示7页 if self.page_count self.page_num * 2 1: start_page 1 end_page self.page_count else: # 当前选中的页面小于三 if self.page self.page_num: start_page 1 end_page 2 * self.page_num 1 else: # 当前选中的页面如果是最后三页 if (self.page self.page_num) self.page_count: start_page self.page_count - 2 * self.page_num end_page self.page_count else: start_page self.page - self.page_num end_page self.page self.page_num # 存放html代码 page_list [] self.query_dict.setlist(self.page_param,[1]) if self.page1: #首页 #上一页 page_list.append(fli classdisableda href?{self.query_dict.urlencode()}首页/a/li) page_list.append(fli classdisableda href?{self.query_dict.urlencode()}上一页/a/li) else: self.query_dict.setlist(self.page_param, [1]) page_list.append(flia classpage-first href?{self.query_dict.urlencode()}首页/a/li) self.query_dict.setlist(self.page_param, [self.page - 1]) page_list.append(flia href?{self.query_dict.urlencode()}上一页/a/li) #页码 # 定义开始和结束页 for page_num_ye in range(start_page, end_page 1): if page_num_yeself.page: self.query_dict.setlist(self.page_param, [page_num_ye]) page_list.append(fli classactivea href?{self.query_dict.urlencode()}{page_num_ye}/a/li) else: self.query_dict.setlist(self.page_param, [page_num_ye]) page_list.append(flia href?{self.query_dict.urlencode()}{page_num_ye}/a/li) if self.page self.page_count: self.query_dict.setlist(self.page_param, [self.page 1]) page_list.append(flia href?{self.query_dict.urlencode()}下一页/a/li) self.query_dict.setlist(self.page_param, [self.page_count]) page_list.append(flia classpage-first href?{self.query_dict.urlencode()}尾页/a/li) #下一页 #尾页 else: page_list.append(fli classdisableda href?{self.query_dict.urlencode()}下一页/a/li) page_list.append(fli classdisableda href?{self.query_dict.urlencode()}尾页/a/li) #跳转 # 跳转页 search_page f li classpage-jump form methodget classform-inline input typenumber name{self.page_param} min1 value{self.page} placeholder页码 classform-control button typesubmit跳转/button /form /li page_list.append(search_page) # 将字符串传递给前端页面 page_str mark_safe(.join(page_list)) return page_strviews中引用from utils_app.utils.page_data import PageData #方法中 userlist models.UserInfo.objects.filter(**data_dict) data PageData(request,userlist) content { userlist:data.page_queryset, page_str:data.page_html() } return render(request, admin/admin.html,content)