zoukankan      html  css  js  c++  java
  • Python---Flask--06--分页的实现

    自动分页

    flask自带paginate分页

    paginate属性

    - 当前页面(属性)
        page  
    - 当前页面中的记录(属性)
        items
    - 上一页页码(属性)
        prev_num
    - 下一页页码(属性)
        next_num
    - 如果有上页返回True(属性)
        has_prev
    - 如果有下页返回True(属性)
        has_next
    - 查询得到总页数(属性)
        pages
    - 每一页显示记录的数量(属性)
        per_page  
    - 查询返回的记录总数(属性)
        total
        
    @blue.route('/goodslist/<int:num>/<int:per>/')
    def goodslist(num,per):
        paginate = Goods.query.paginate(num,per)
     
        return render_template('goodslist.html', paginate=paginate)
    

    paginate中的方法

    • prev() 上一页的分页对象Pagination
    • next() 下一页的分页对象Pagination
    • iter_pages(left_edge=2,left_current=2,right_current=5,right_edge=2)
    • iter_pages 用来获得针对当前页的应显示的分页页码列表。
      假设当前共有100页,当前页为50页,按照默认的参数设置调用iter_pages获得的列表为:
      [1,2,None,48,49,50,51,52,53,54,55,None,99,100]

    渲染模板

    <!--定义一个分页宏-->
    {% macro my_paginate(pagination, url) %}
     <nav class="pagination">
        <ul>
          {%if pagination.has_prev%}
        <li class="page-item active"><a class="page-link" href="{{url_for(url,page=pagination.page-1)}}">上一页</a></li>
        {%else%}
        <li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
        {%endif%}
    
            {%for page in pagination.iter_pages(1,1,3,1)%}
            {%if page%}
                <li class="page-item {%if page==pagination.page%}active{%endif%}"><a class="page-link" href="{{url_for(url,page=page)}}">{{page}}</a></li>
            {%else%}
                <li class="page-item disabled"><a class="page-link" href="#">&hellip;</a></li>
            {%endif%}
    
        {%endfor%}
    
        {%if pagination.has_next%}
        <li class="page-item active"><a class="page-link" href="{{url_for(url,page=pagination.page+1)}}">下一页</a></li>
        {%else%}
        <li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>
        {%endif%}
        </ul>
     </nav>
    {% endmacro %}
    

    宏的使用

    {% extends '/home/layout/base.html' %}
    {% import '/home/layout/page.html' as pg %}
    {% block content %}
    <div class="content">
          <div class="jumbotron">
            <h1>欢迎访问博客</h1>
            <p>在这里可以看到前端技术,后端程序,网站内容管理系统等文章,还有我的程序人生!</p>
          </div>
          <div id="focusslide" class="carousel slide" data-ride="carousel">
            <ol class="carousel-indicators">
              <li data-target="#focusslide" data-slide-to="0" class="active"></li>
              <li data-target="#focusslide" data-slide-to="1"></li>
              <li data-target="#focusslide" data-slide-to="2"></li>
            </ol>
            <div class="carousel-inner" role="listbox">
              <div class="item active"> <a href="" target="_blank"><img src="{{ url_for('static', filename='images/banner/banner_01.jpg')}}" alt="" class="img-responsive"></a>
                <!--<div class="carousel-caption"> </div>-->
              </div>
              <div class="item"> <a href="" target="_blank"><img src="{{ url_for('static', filename='images/banner/banner_02.jpg')}}" alt="" class="img-responsive"></a>
                <!--<div class="carousel-caption"> </div>-->
              </div>
              <div class="item"> <a href="" target="_blank"><img src="{{ url_for('static', filename='images/banner/banner_03.jpg')}}" alt="" class="img-responsive"></a>
                <!--<div class="carousel-caption"> </div>-->
              </div>
            </div>
            <a class="left carousel-control" href="#focusslide" role="button" data-slide="prev" rel="nofollow"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">上一个</span> </a> <a class="right carousel-control" href="#focusslide" role="button" data-slide="next" rel="nofollow"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">下一个</span> </a> </div>
          <article class="excerpt-minic excerpt-minic-index">
            <h2><span class="red">【今日推荐】</span><a href="" title="">从下载看我们该如何做事</a></h2>
            <p class="note">一次我下载几部电影,发现如果同时下载多部要等上几个小时,然后我把最想看的做个先后排序,去设置同时只能下载一部,结果是不到一杯茶功夫我就能看到最想看的电影。 这就像我们一段时间内想干成很多事情,是同时干还是有选择有顺序的干,结果很不一样。同时...</p>
          </article>
          <div class="title">
            <h3>最新发布</h3>
            <div class="more"><a href="">PHP</a><a href="">JavaScript</a><a href="">EmpireCMS</a><a href="">Apache</a><a href="">MySQL</a></div>
          </div>
          {% for article in paginate.items %}
          <article class="excerpt excerpt-1">
              <a class="focus" href="article.html" title="">
                  <img class="thumb" data-original="images/excerpt.jpg" src="{{ article.cover_url }}" alt="">
              </a>
            <header><a class="cat" href="program">后端程序<i></i></a>
              <h2><a href="{{url_for('home.show', id=article.id)}}" title="">{{article.title}}</a></h2>
            </header>
            <p class="meta">
              <time class="time"><i class="glyphicon glyphicon-time"></i>{{ article.add_time }}</time>
              <span class="views"><i class="glyphicon glyphicon-eye-open"></i> 共120人围观</span>
              <a class="comment" href="article.html#comment"><i class="glyphicon glyphicon-comment"></i> 0个不明物体</a>
            </p>
            <p class="note">可以用strtotime()把日期($date)转成时间戳,再用date()按需要验证的格式转成一个日期,来跟$date比较是否相同来验证这个日期的格式是否是正确的。所以要验证日期格式 ... </p>
          </article>
          {% endfor %}
        <!--分页-->
         {{ pg.my_paginate(paginate, 'home.blog_list')}}
        </div>
    {% endblock %}
    

    手动

    @blue.route('/goodslist/<int:num>/<int:per>/')
    def goodslist(num,per):
        # 第num页
        # 每页显示per行
        goods = Goods.query.offset((num-1) * per).limit(per)
        
        return render_template('goodslist.html', goods=goods
    
    僵尸将臣
  • 相关阅读:
    C#指南,重温基础,展望远方!(3)类型和变量
    C#指南,重温基础,展望远方!(2)程序结构
    C#指南,重温基础,展望远方!(1)C#语言介绍
    ASP.NET MVC 简单的分页思想与实现
    ASP.NET MVC实现网站验证码功能
    hdu
    多种方法实现实现全排列 + sort调用标准函数库函数的简述
    HDU
    <hdu
    NYOJ-括号配对问题 <技巧性的非栈道法>
  • 原文地址:https://www.cnblogs.com/sunshenggang/p/11072024.html
Copyright © 2011-2022 走看看