zoukankan      html  css  js  c++  java
  • django中的分页标签

    class Pagination:
        def __init__(self, page, page_total, per_one_page=15, max_page=11):
    
            '''
            :param page: 当前页
            :param page_total: 总页数
            :param per_one_page: 没有显示的条数
            :param page_max: 最大分页标签数
            '''
            # 获取当前页面
            try:
                page = int(page)
                if page < 0:
                    page = 1
            except Exception as e:
                print(e)
                page = 1
            self.page = page
            # 没有显示的内容条数
            self.per_one_page = per_one_page
            # 最大分页标签数
            self.max_page = max_page
            # 最大分页标签的一半
            self.half_page = self.max_page // 2
            page_total, more = divmod(page_total, per_one_page)
            self.page_total = page_total
            # 总页数
            if more:
                self.page_total += 1
            # 当前分页标签起始和结束值
            # 页面总数小于最大显示数
            if page_total < self.max_page:
                self.page_start = 1
                self.page_end = self.page_total
            else:
                # 当前页面小于分页最大显示数量的一半,
                if self.page - self.half_page < 0:
                    self.page_start = 1
                    self.page_end = self.max_page
                    # 当前页面大于总页面数量减去最大分页数量的一半
                elif page + self.half_page > page_total:
                    self.page_end = page_total
                    self.page_start = page_total - max_page
                else:
                    # 正常取值
                    self.page_start = page - self.half_page
                    self.page_end = page + self.half_page
    
        # 取对象开始索引
        @property
        def start(self):
            return (self.page - 1) * self.per_one_page
    
        # 取对象结束索引
        @property
        def end(self):
            return self.page * self.per_one_page
    
        # 获取分页标签
        @property
        def page_tag(self):
            # 页面分页标签列表
            pager_li = []
            # 上一页标签按钮
            if self.page > 1:
                last_page = '<li><a href="?page={}"><span>«</span></a></li>'.format(self.page - 1)
            else:
                # 当前页是第一页
                last_page = '<li class="disabled"><a ><span>«</span></a></li>'
            pager_li.append(last_page)
            # 循环生成分页标签
            for i in range(self.page_start, self.page_end + 1):
                if i == self.page:
                    pager_li.append('<li class="active"><a href="?page={}">{}</a></li>'.format(i, i))
                else:
                    pager_li.append('<li><a href="?page={}">{}</a></li>'.format(i, i))
            # 下一页标签按钮
            if self.page + 1 < self.page_total:
                next_page = '<li><a href="?page={}"> <span>»</span></a></li>'.format(self.page + 1)
            else:
                # 当前页是最后一页
                next_page = '<li class="disabled"><a ><span>»</span></a></li>'
            # 所有标签联合
            pager_li.append(next_page)
            pager = ' '.join(pager_li)
            return pager
    

      

  • 相关阅读:
    数字证书原理(转)
    python update from 2.6 to 2.7
    python uwsgi 部署以及优化
    uWSGI配置(转 )
    Python程序的性能分析指南(转)
    mysql 暴力破解 root账号密码
    VMware虚拟机实用经验总结十一条
    小技巧之指定refer
    cookie和session
    web相关
  • 原文地址:https://www.cnblogs.com/tcpblog/p/10133314.html
Copyright © 2011-2022 走看看