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>
     


  • 相关阅读:
    PsySH——PHP交互式控制台
    PHP通过ssh或socks5读取远程服务器的mysql数据库
    构建:vue项目配置后端接口服务信息
    module.exports用法
    PhpStorm连接服务器,开始自动上传功能
    JavaScript Array.some()方法用法
    vue-router query和params传参(接收参数),$router、$route的区别
    ES6箭头函数(Arrow Functions)
    工作中常用到的ES6语法
    VueJs2.0建议学习路线
  • 原文地址:https://www.cnblogs.com/jmc218/p/13743727.html
Copyright © 2011-2022 走看看