一、分页扩展类

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "TKQ"
class Pagination:
    def __init__(self,current_page,all_item,base_url='',per_pagenum=5,min_per_pagenum=1,max_per_pagenum=100):
        #每页条目数量
        try:
            per_pagenum=int(per_pagenum)
            if per_pagenum < min_per_pagenum:
                self._per_pagenum=min_per_pagenum
            elif per_pagenum > max_per_pagenum:
                self._per_pagenum = max_per_pagenum
            else:
                self._per_pagenum = per_pagenum
        except:
            self._per_pagenum=5

        #总共页数
        try:
            all_item = int(all_item)
            self._count=all_item
            self._p_nums, c = divmod(all_item, self._per_pagenum)
            if c > 0:
                self._p_nums += 1
        except Exception as e:
            raise e

        # 当前页码
        try:
            page = int(current_page)
            if page < 1:
                self._current_page = 1
            elif page > self._p_nums:
                self._current_page = self._p_nums
            else:
                self._current_page = page
        except:
            self._current_page = 1

        #基础URL
        self.base_url = base_url

    @property
    def page(self):
        """
        :return: 返回当前页页码
        """
        return self._current_page
    @property
    def num_per_page(self):
        """
        :return: 每页显示项个数
        """
        return self._per_pagenum
    @property
    def count(self):
        """
        :return: 所有项个数
        """
        return self._count
    @property
    def num_pages(self):
        """
        :return:返回总页数.
        """
        return self._p_nums

    def has_prev(self):
        """
        :return: 是否有上一页
        """
        if self._current_page == 1:
            return False
        else:
            return True

    def has_next(self):
        """
        :return: 是否有下一页
        """
        if self._current_page == self._p_nums:
            return False
        else:
            return True

    @property
    def start_index(self):
        """
        :return: 当前页起始条目索引值
        """
        return (self._current_page - 1) * self._per_pagenum

    @property
    def end_index(self):
        """
        :return: 当前页终止条目索引值
        """
        return self._current_page * self._per_pagenum

    #显示前端分页效果
    def show_pager(self):
        list_page = []
        if self._p_nums < 11:
            s = 1
            t = self._p_nums + 1
        else:  # 总页数大于11
            if self._current_page < 6:
                s = 1
                t = 12
            else:
                if (self._current_page + 5) < self._p_nums:
                    s = self._current_page - 5
                    t = self._current_page + 5 + 1
                else:
                    s = self._p_nums - 11
                    t = self._p_nums + 1
        # 首页
        first = '<a href="/%s/1">首页</a>' % self.base_url
        list_page.append(first)
        # 上一页
        if self.has_prev():
            prev = '<a href="/%s/%s">上一页</a>' % (self.base_url,self._current_page - 1,)
            list_page.append(prev)
        #显示个页码
        for p in range(s, t):  # 1-11
            if p == self._current_page:
                temp = '<a class="active" href="/%s/%s">%s</a>' % (self.base_url,p, p)
            else:
                temp = '<a href="/%s/%s">%s</a>' % (self.base_url,p, p)
            list_page.append(temp)
        #下一页
        if self.has_next():
            next = '<a href="/%s/%s">下一页</a>' % (self.base_url,self._current_page + 1,)
            list_page.append(next)

        # 尾页
        last = '<a href="/%s/%s">尾页</a>' % (self.base_url,self._p_nums,)
        list_page.append(last)

        # 跳转
        jump = """<input type='text' /><a onclick="Jump('%s',this);">GO</a>""" % (self.base_url)
        script = """<script>
            function Jump(baseUrl,ths){
                var val = ths.previousElementSibling.value;
                if(val.trim().length>0){
                    location.href = baseUrl + val;
                }
            }
            </script>"""
        list_page.append(jump)
        list_page.append(script)
        str_page = "".join(list_page)
        return str_page

if __name__ == '__main__':
    p=Pagination(2,100,'index',per_pagenum=10)
    print p._p_nums,p.base_url,p._current_page
Pagination类

相关文章:

  • 2022-12-23
  • 2021-10-25
  • 2022-02-25
  • 2021-11-18
  • 2022-01-02
  • 2021-12-29
  • 2021-12-11
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2021-09-04
  • 2021-09-28
相关资源
相似解决方案