zoukankan      html  css  js  c++  java
  • 分页系统

    1.后台固定--生成一个分页规则类,可以直接调用
    class PageInfo(object):
    def __init__(self,current_page,all_count, per_page, base_url, show_page=11,):
    '''

    :param current_page: 当前的页数
    :param all_count: 数据库总行数
    :param per_page: 每页显示行数
    :param base_url: 传递url
    :param show_page: 设置展示的页数
    '''
    try:
    self.current_page = int(current_page)
    except Exception as e:
    self.current_page = 1
    self.all_count = all_count
    self.per_page = per_page

    a, b = divmod(all_count, per_page)
    if b:
    a = a+1
    self.all_pager = a
    self.show_page = show_page
    self.base_url = base_url
    def start(self):
    return (self.current_page-1) * self.per_page

    def end(self):
    return self.current_page * self.per_page


    def pager(self):
    page_list = []

    half = int((self.show_page-1)/2)
    # 如果数据总页数 < 11
    if self.all_pager<self.show_page:
    begin = 1
    stop = self.all_pager + 1
    # 如果数据总页数 > 11
    else:
    if self.current_page <= half:
    begin = 1
    stop = self.show_page + 1
    else:
    # 如果当前页 <=5,永远显示1,11
    if self .current_page + half > self.all_pager:
    begin = self.all_pager - self.show_page + 1
    stop = self.all_pager + 1
    else:
    begin = self.current_page - half
    stop = self.current_page + half + 1
    if self.current_page <= 1:
    prev = "<li><a href='#'>上一页</a></li>"
    else:
    prev = "<li><a href='%s?page=%s'>上一页</a></li>" % (self.base_url, self.current_page - 1,)
    page_list.append(prev)

    for i in range(begin, stop):
    if i == self.current_page:
    temp ='<li class="active"><a href="%s?page=%s">%s</a></li>'%(self.base_url, i, i)
    else:
    temp ='<li><a href="%s?page=%s">%s</a></li>'%(self.base_url, i, i)

    page_list.append(temp)

    if self.current_page >= self.all_pager:
    nex = "<li><a href='#'>下一页</a></li>"
    else:
    nex = "<li><a href='%s?page=%s'>下一页</a></li>" %(self.base_url, self.current_page+1,)
    page_list.append(nex)

    return ''.join(page_list)

    2.导入类,调用其方法
    from utils.pager import PageInfo

    def custom(request):
    all_count = models.User.objects.all().count()
    page_info = PageInfo(request.GET.get('page'), all_count, 10, '/custom.html', 11)
    user_list = models.User.objects.all()[page_info.start():page_info.end()]

    return render(request, 'custom.html', {'user_list': user_list, 'page_info': page_info})

    3.前端html
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>分页</title>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    </head>
    <body>
    <h1>分页列表</h1>
    <ul>
    {% for row in user_list %}
    <li>{{ row.name }}</li>
    {% endfor %}
    </ul>
    <nav aria-label="Page navigation">
    <ul class="pagination">
    {{ page_info.pager|safe }}
    </ul>
    </nav>

    </body>
    </html>
     


  • 相关阅读:
    Overloaded的方法是否可以改变返回值的类型
    parseXXX的用法
    java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
    UVA 10405 Longest Common Subsequence(简单DP)
    POJ 1001 Exponentiation(大数处理)
    POJ 2318 TOYS(计算几何)(二分)
    POJ 1265 Area (计算几何)(Pick定理)
    POJ 3371 Flesch Reading Ease (模拟题)
    POJ 3687 Labeling Balls(拓扑序列)
    POJ 1094 Sorting It All Out(拓扑序列)
  • 原文地址:https://www.cnblogs.com/jmc218/p/13743727.html
Copyright © 2011-2022 走看看