zoukankan      html  css  js  c++  java
  • 如何实现分页功能

    定义一个模块

    from django.http.request import QueryDict
    
    class Pagination:
    
        def __init__(self, page_num, all_count,params=None, per_num=10, max_show=11):
            """
            :param page_num:  当前的页码数
            :param all_count: 总数据量
            :param per_num:   每页显示的数据条数
            :param max_show:  最大显示页码数
            :param self.total_page_num:  总页码数
            :param self.page_start:  起始页码数
            :param self.page_end:    终止页码数
    
            """
            try:
                page_num = int(page_num)
                if page_num <= 0:
                    page_num = 1
            except Exception as e:
                page_num = 1
            self.parmas = params if params else QueryDict(mutable=True)
            self.page_num = page_num
            self.all_count = all_count
            self.per_num = per_num
            total_page_num, more = divmod(all_count, per_num)
            if more:
                total_page_num += 1
            half_show = max_show // 2
            # 总页码数不足以满足最大页码数
            if total_page_num < max_show:
                page_start = 1
                page_end = total_page_num
            else:
                if page_num - half_show <= 0:
                    page_start = 1
                    page_end = max_show
                elif page_num + half_show > total_page_num:
                    page_start = total_page_num - max_show + 1
                    page_end = total_page_num
                else:
                    page_start = page_num - half_show
                    page_end = page_num + half_show
    
            self.page_start = page_start
            self.page_end = page_end
            self.total_page_num = total_page_num
    
        @property
        def page_html(self):
            page_list = []
            # 上一页
            if self.page_num == 1:
                page_list.append('<li class="disabled"><a ><span>&laquo;</span></a></li>')
            else:
                #  query=alex  page = 1
                self.parmas['page'] = self.page_num - 1
                page_list.append('<li><a href="?{}" ><span>&laquo;</span></a></li>'.format(self.parmas.urlencode()))
    
            for i in range(self.page_start, self.page_end + 1):
                #  query=alex  page = 1
                self.parmas['page'] = i
                if i == self.page_num:
                    page_list.append('<li class="active"><a href="?{}">{}</a></li>'.format(self.parmas.urlencode(), i))
                else:
                    page_list.append('<li><a href="?{}">{}</a></li>'.format(self.parmas.urlencode(), i))
    
            # 下一页
            if self.page_num == self.total_page_num:
                page_list.append('<li class="disabled"><a><span>&raquo;</span></a></li>')
            else:
                self.parmas['page'] = self.page_num + 1   # query:alex page:2   ——》 query=alex&page=2
                page_list.append('<li><a href="?{}" ><span>&raquo;</span></a></li>'.format(self.parmas.urlencode()))
    
            return ''.join(page_list)
    
        @property
        def start(self):
            return (self.page_num - 1) * self.per_num
    
        @property
        def end(self):
            return self.page_num * self.per_num

    后端引用

    page = Pagination(request.GET.get('page', '1'), all_customer.count(), request.GET.copy(), 2) 

    ?params=None
    ?request.GET.copy() 

    #按照def __init__(self, page_num, all_count,params=None, per_num=10, max_show=11): 对应传参

    前端引用

    {{ page_html|safe }}  #自己加上自己喜欢的样式
  • 相关阅读:
    第五周学习总结-20175228
    第二周Java学习总结
    namke 命令行编译
    libssh2 的集成与应用
    vc6 编译问题
    vs2010 编译curl-7.42.1
    linux redis 安装
    解决error C2011: 'fd_set' : 'struct' type redefinition的方法
    ajax 的简单应用
    servlet 启动加载配置文件及初始化
  • 原文地址:https://www.cnblogs.com/YiDuoHua/p/10746023.html
Copyright © 2011-2022 走看看