zoukankan      html  css  js  c++  java
  • python-django-自定义分页

    自定义分页,复制引入即可用

     1 class Pagination(object):
     2     def __init__(self,totalCount,currentPage,perPageItemNum=10,maxPageNum=7):
     3         # 数据总个数
     4         self.total_count = totalCount
     5         # 当前页
     6         try:
     7             v = int(currentPage)
     8             if v <= 0:
     9                v = 1
    10             self.current_page = v
    11         except Exception as e:
    12             self.current_page = 1
    13         # 每页显示的行数
    14         self.per_page_item_num = perPageItemNum
    15         # 最多显示页面
    16         self.max_page_num = maxPageNum
    17 
    18     def start(self):
    19         return (self.current_page-1) * self.per_page_item_num
    20 
    21     def end(self):
    22         return self.current_page * self.per_page_item_num
    23     @property
    24     def num_pages(self):
    25         """
    26         总页数
    27         :return:
    28         """
    29         # 666
    30         # 10
    31         a,b = divmod(self.total_count,self.per_page_item_num)
    32         if b == 0:
    33             return a
    34         return a+1
    35 
    36     def pager_num_range(self):
    37         # self.num_pages()
    38         # self.num_pages
    39         # 当前页
    40         #self.current_page
    41         # 最多显示的页码数量 11
    42         #self.per_pager_num
    43         # 总页数
    44         # self.num_pages
    45         if self.num_pages < self.max_page_num:
    46             return range(1,self.num_pages+1)
    47         # 总页数特别多 5
    48         part = int(self.max_page_num/2)
    49         if self.current_page <= part:
    50             return range(1,self.max_page_num+1)
    51         if (self.current_page + part) > self.num_pages:
    52             return range(self.num_pages-self.max_page_num+1,self.num_pages+1)
    53         return range(self.current_page-part,self.current_page+part+1)
    54 
    55     def page_str(self):
    56         page_list = []
    57 
    58         first = "<li><a href='/fenye2.html?p=1'>首页</a></li>"
    59         page_list.append(first)
    60 
    61         if self.current_page == 1:
    62             prev = "<li><a href='#'>上一页</a></li>"
    63         else:
    64             prev = "<li><a href='/fenye2.html?p=%s'>上一页</a></li>" %(self.current_page-1,)
    65         page_list.append(prev)
    66         for i in self.pager_num_range():
    67             if i == self.current_page:
    68                 temp = "<li class='active'><a href='/fenye2.html?p=%s'>%s</a></li>" %(i,i)
    69             else:
    70                 temp = "<li><a href='/fenye2.html?p=%s'>%s</a></li>" % (i, i)
    71             page_list.append(temp)
    72 
    73         if self.current_page == self.num_pages:
    74             nex = "<li><a href='#'>下一页</a></li>"
    75         else:
    76             nex = "<li><a href='/fenye2.html?p=%s'>下一页</a></li>" % (self.current_page + 1,)
    77         page_list.append(nex)
    78 
    79         last = "<li><a href='/fenye2.html?p=%s'>尾页</a></li>" %(self.num_pages,)
    80         page_list.append(last)
    81 
    82         return ''.join(page_list)

    调用pager.py

    views.py

    1 def FenYe(request):
    2     from pager import Pagination
    3     current_page = request.GET.get('p')
    4     page_obj = Pagination(666, current_page)#参数:totalCount,currentPage,perPageItemNum,maxPageNum
    5 
    6     data_list = USER_LIST[page_obj.start():page_obj.end()]
    7     return render(request, 'fenye.html', {'data': data_list, 'page_obj': page_obj})

    fenye.html

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>自定制分页</title>
     6 
     7     <link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.css">
     8 </head>
     9 <body>
    10 <ul>
    11     {% for row in data %}
    12         <li>{{ row.name }}-{{ row.age }}</li>
    13     {% endfor %}
    14 </ul>
    15 {% for i in page_obj.pager_num_range %}
    16     <a href="/自定制分页.html?p={{ i }}">{{ i }}</a>
    17 {% endfor %}
    18 <hr/>
    19 
    20 <ul class="pagination pagination-sm">
    21     {{ page_obj.page_str|safe }}
    22 </ul>
    23 <div style="height: 300px;"></div>
    24 </body>
    25 </html>
  • 相关阅读:
    MOSS项目开发 周记(第十四周)
    MOSS项目开发 周记(第十七周)
    MOSS项目开发 周记(第十一周)
    MOSS项目开发 周记(第九周)
    MOSS项目开发 周记(第十三周)
    MOSS项目开发 周记(第十周)
    MOSS项目开发 周记(第十二周)
    MOSS项目开发 周记(第十六周)
    php中echo(),print(),print_r()的区别
    11个有用的移动网页开发App和HTML5框架
  • 原文地址:https://www.cnblogs.com/GodLv/p/9574791.html
Copyright © 2011-2022 走看看