zoukankan      html  css  js  c++  java
  • python通用分页功能

    实现:

     1 class Page:
     2 
     3     def __init__(self,current_page,data_count,per_page_count=10,pager_num=10):
     4         self.current_page = current_page
     5         self.data_count = data_count
     6         self.per_page_count = per_page_count
     7         self.pager_num = pager_num
     8 
     9     @property
    10     def start(self):
    11         return (self.current_page-1) * self.per_page_count
    12 
    13     @property
    14     def end(self):
    15         return self.current_page * self.per_page_count
    16 
    17     @property
    18     def total_count(self):
    19         total_num,remainder = divmod(self.data_count,self.per_page_count)
    20         if remainder:
    21             total_num += 1
    22         return total_num
    23 
    24     def page_str(self,base_url):
    25         page_list = []
    26         max = int((self.pager_num+1)/2)
    27         min = int((self.pager_num-1)/2)
    28         if self.total_count < self.pager_num:
    29             start_index = 1
    30             end_index = self.total_count + 1
    31         else:
    32             if self.current_page <= max:
    33                 start_index = 1
    34                 end_index = self.pager_num + 1
    35             else:
    36                 start_index = self.current_page - min
    37                 end_index = self.current_page + max
    38                 if self.current_page + max > self.total_count:
    39                     start_index = self.total_count - self.pager_num + 1
    40                     end_index = self.total_count + 1
    41 
    42         if self.current_page == 1:
    43             prev = '<a class="page" href="javascript:void(0);">上一页</a>'
    44         else:
    45             head = '<a class="page" href="%s?p=%s">首页</a>' % (base_url,1)
    46             page_list.append(head)
    47             prev = '<a class="page" href="%s?p=%s">上一页</a>' % (base_url,self.current_page - 1)
    48         page_list.append(prev)
    49 
    50         for i in range(start_index, end_index):
    51             if i == self.current_page:
    52                 temp = '<a class="page active" href="%s?p=%s">%s</a>' % (base_url,i, i)
    53             else:
    54                 temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url,i,i)
    55             page_list.append(temp)
    56 
    57         if self.current_page == self.total_count:
    58             next = '<a class="page" href="javascript:void(0)">下一页</a>'
    59         else:
    60             next = '<a class="page" href="%s?p=%s">下一页</a>' % (base_url,self.current_page + 1)
    61             tail = '<a class="page" href="%s?p=%s">尾页</a>' % (base_url, self.total_count)
    62             page_list.append(tail)
    63         page_list.append(next)
    64 
    65         jump = """
    66            <input type='text'/><a onclick='jumpTo(this,"%s?p=");'>GO</a>
    67            <script>
    68                function jumpTo(ths,base) {
    69                    var val = ths.previousSibling.value;
    70                    if(val){
    71                         location.href = base + val;
    72                         }
    73                }
    74            </script>
    75            """%base_url
    76 
    77         page_list.append(jump)
    78         page_str = "".join(page_list)
    79         return page_str

    应用:

    def user_list(request):
        current_page = request.GET.get('p', 1)
        current_page = int(current_page)
        page_obj = Page(current_page,len(LIST))
        data =LIST[page_obj.start:page_obj.end]
        page_str = page_obj.page_str('/user_list/')
        return render(request,'user_list.html',{'li':data,'page_str':page_str})
  • 相关阅读:
    [官网]清华大学的开源镜像站点 配置方法
    Android MIFARE NFCA源码解析
    Delphi XE8 TStyleBook的使用
    【FireMonkey】StyleBook使用方法
    Delphi第三方组件安装DCU.PAS.DPK.BPL.ActiveX控件
    M1卡说明及使用proxmark3破解方法
    M1卡修改各区块控制位值和数据
    DICOMDIR
    ZentaoPMS 系统的优先级以及修改
    集成禅道和svn
  • 原文地址:https://www.cnblogs.com/ray-mmss/p/10583796.html
Copyright © 2011-2022 走看看