自定义分页

实用的功能没有解释

分页插件代码:

class CurrentPage(object):
    """
    这是一个分页插件
    快速使用:
        CurrentPage(tota_num_page='数据的总个数',current_page="当前的页码",page_num="每一页展示的个数",button_page="页码的数量",upDown="是否有上一页和下一页",upDown="是否有首页和尾页")
        page_num 默认10条
        button_page 默认选择页码为7条
        upDown  默认没有上一页和下一页
        startEnd 默认没有首页和尾页
    """
    def __init__(self,tota_num_page,current_page,page_num=10,button_page=7,upDown=False,startEnd=False):
        """
        tota_num_page  数据的总个数
        current_page   当前的页码
        page_num        每一页展示的个数
        button_page        页码的数量
        upDown            是否有上一页和下一页 默认是False
        startEnd        是否有首页和尾页 默认是False
        """
        self.upDown=upDown
        self.startEnd=startEnd
        self.tota_num_page=tota_num_page
        self.page_num=page_num
        self.button_page=button_page
        try:
            self.current_page=int(current_page)
            if self.current_page>self.num_pages:
                self.current_page=self.num_pages
            elif self.current_page<1:
                self.current_page=1
        except Exception as e:
            print(e)
            self.current_page=1
    def start(self):
        return (self.current_page-1)*self.page_num
    def end(self):
        return self.current_page*self.page_num
    @property
    def num_pages(self):
        s,r=divmod(self.tota_num_page,self.page_num)
        if not r==0:
            s=s+1
        return s
    @property
    def page_num_list(self):
        if self.num_pages<self.button_page:
            return range(1,self.num_pages+1)
        pager=int(self.button_page/2)
        if pager>self.current_page:
            return range(1,self.button_page+1)
        if self.num_pages-pager<self.current_page:
            return range(self.num_pages-self.button_page+1,self.num_pages+1)
        return range(self.current_page-pager,self.current_page+pager+1)
    def page(self):
        l=[]
        if self.upDown:
            if self.startEnd:
                s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">首页</span></a></li>'%(1)
                l.append(s)
                if self.current_page==1:
                    s='<li><a aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'
                else:
                    s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'%(self.current_page-1)
                l.append(s)
                for p in self.page_num_list:
                    s="<li><a href='?p=%s'>%s</a></li>"%(p,p)
                    l.append(s)
                if self.current_page==self.num_pages:
                    s='<li><a aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>'
                else:
                    s='<li><a href="?p=%s" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>'%(self.current_page+1)
                l.append(s)
                s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">尾页</span></a></li>'%(self.num_pages)
                l.append(s)
            else:
                if self.current_page==1:
                    s='<li><a aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'
                else:
                    s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'%(self.current_page-1)
                l.append(s)
                for p in self.page_num_list:
                    s="<li><a href='?p=%s'>%s</a></li>"%(p,p)
                    l.append(s)
                if self.current_page==self.num_pages:
                    s='<li><a aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>'
                else:
                    s='<li><a href="?p=%s" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>'%(self.current_page+1)
                l.append(s)

        else:
            if self.startEnd:
                s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">首页</span></a></li>'%(1)
                l.append(s)
                for p in self.page_num_list:
                    s="<li><a href='?p=%s'>%s</a></li>"%(p,p)
                    l.append(s)
                s='<li><a href="?p=%s" aria-label="Previous"><span aria-hidden="true">尾页</span></a></li>'%(self.num_pages)
                l.append(s)
            else:
                for p in self.page_num_list:
                    s="<li><a href='?p=%s'>%s</a></li>"%(p,p)
                    l.append(s)
            
        return "".join(l)
分页python代码

python运行代码 简单的使用

cp=CurrentPage(数据总个数,当前页码)

html中的使用 django的模板语法

{{cp.page|safe}}

 

posted @ 2018-09-20 11:31  王室  阅读(99)  评论(0编辑  收藏  举报