• 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})
    """
    class Pagination(object):
        def __init__(self, current_page, totalCount, base_url,parmas, per_page_count=10, max_page_count=11):
            try:
                current_page = int(current_page)
            except:
                current_page = 1
            if current_page < 1:
                current_page = 1
            # 当前页
            self.current_page = current_page
            # 总记录数/总条数
            self.totalCount = totalCount
            # 每页显示的数量
            self.per_page_count = per_page_count
    
            max_page_num, v = divmod(totalCount, per_page_count)
            if v:
                max_page_num += 1
    
            # 总页数
            self.max_page_num = max_page_num
            # 显示页码的个数
            # 页面上默认显示11个页面(当前页在中间)
            self.max_page_count = max_page_count
    
            self.half_page_count = int((self.max_page_count - 1) / 2)
            # URL前缀
            self.base_url = base_url
    
            import copy
            parmas=copy.deepcopy(parmas)
            print(parmas,'------******')
            self.parmas=parmas
        # 每页开始的记录
        @property
        def start(self):
            return (self.current_page - 1) * self.per_page_count
    
        # 每页结束的记录
        @property
        def end(self):
            return self.per_page_count * self.current_page
    
        # 页码显示
        def page_html(self):
    
            if self.max_page_num < self.max_page_count:
                page_start = 1
                page_end = self.max_page_num
            else:
                if self.current_page < self.half_page_count:
                    page_start = 1
                    page_end = self.max_page_count
    
                else:
                    if (self.current_page + self.half_page_count) > self.max_page_num:
                        page_start = self.max_page_num - self.max_page_count + 1
                        page_end = self.max_page_num
    
                    else:
                        page_start = self.current_page - self.half_page_count
                        page_end = self.current_page + self.half_page_count
    
            html_list = []
            # 首页
            self.parmas['page'] = 1
            first_page = '<li><a href="%s?%s">首页</a></li>' % (self.base_url,self.parmas.urlencode())
            html_list.append(first_page)
    
            # 上一页
    
            if self.current_page == 1:
                pre_page='<li class="disabled"><a href="#" aria-label="Previous" ><span aria-hidden="true">&laquo;</span></a></li>'
                #pre_page = "<a href='%s?%s' >上一页</a>" % (self.base_url, self.parmas.urlencode())
            else:
                self.parmas['page'] =self.current_page-1
                #pre_page = "<a href='%s?%s'>上一页</a>" % (self.base_url, self.parmas.urlencode())
                pre_page = '<li><a href="%s?%s" aria-label="Previous"><span aria-hidden="true"> &laquo; </span></a> </li>'%(
                self.base_url, self.parmas.urlencode())
            html_list.append(pre_page)
    
    
            for i in range(page_start, page_end + 1):
                self.parmas['page'] =i
                if i == self.current_page:
                    #tmp = "<a href='%s?%s' class='active'>%s</a>" % (self.base_url, self.parmas.urlencode(), i)
                    tmp='<li class="active"><a href="%s?%s" >%s</a></li>'%(self.base_url, self.parmas.urlencode(), i)
                else:
                    tmp='<li><a href="%s?%s" >%s</a></li>'%(self.base_url, self.parmas.urlencode(), i)
    
                html_list.append(tmp)
    
            # 下一页
            if self.current_page == self.max_page_num:
    
                #next_page = "<a href='%s?%s'>下一页</a>" % (self.base_url, self.parmas.urlencode())
                next_page='<li class="disabled"><a  aria-label="Next" ><span aria-hidden="true">&raquo;</span></a></li>'
            else:
                self.parmas['page']=self.current_page+1
                #next_page = "<a href='%s?%s'>下一页</a>" % (self.base_url,self.parmas.urlencode())
                next_page= next_page='<li><a href="%s?%s" aria-label="Next" disabled="disabled"><span aria-hidden="true">&raquo;</span></a></li>'% (self.base_url,self.parmas.urlencode())
    
            html_list.append(next_page)
    
            self.parmas['page']=self.max_page_num
            last_url = "<li><a href='%s?%s'>尾页</a></li>" % (self.base_url, self.parmas.urlencode())
            html_list.append(last_url)
            return ''.join(html_list)
    pager
  • 相关阅读:
    [BZOJ3745][Coci2015]Norma
    [OJ#15]TR #2 画心
    [BZOJ3585][BZOJ3339]mex
    [OJ#63]树句节够提
    [LOJ#2255][BZOJ5017][Snoi2017]炸弹
    [LOJ#525]「LibreOJ β Round #4」多项式
    【字符编码】Java字符编码详细解答及问题探讨
    【Java基础】序列化与反序列化深入分析
    【目录】JVM目录
    【知识积累】随机数生成的几种方法
  • 原文地址:https://www.cnblogs.com/ctztake/p/8075863.html
Copyright © 2020-2023  润新知