zoukankan      html  css  js  c++  java
  • [Django学习] Django基础(4)_分页器

    一. Django自带的分页器

    from django.core.paginator import Paginator  #导入分页器
    from blog.models import Blog  #自己的模型对象
     
    blogs = Blog.objects.all()  #获取全部博文
    pages = Paginator(blogs, 10) #每10个博文对象分为1页
     
    #分页器相关的方法和属性
    print(pages.count)  #得到里面总共有多少个模型对象
    print(pages.num_pages) #总页数
    print(pages.page_range) #页面列表,可以拿来遍历得到全部页码
     
    #得到第1页包含的模型对象,该对象集合可以用于遍历得到里面的模型对象
    blogs_page = pages.page(1) 
    print(blogs_page.number) #得到该对象集合当前是哪一页
    print(blogs_page.has_previous()) #判断是否有前一页
    print(blogs_page.has_next()) #判断是否有后一页二

    二. 常规样式

      

    三. 组成部分

    1. 共192篇博文。当前第19页,共20页 

      (1)192:pages.count

      (2)19:blog_page.number

      (3)20:pages.num_pages 

       <span>
            共{{pages.count}}篇博文。当前第{{blog_list_html.number}}页,共{{pages.num_pages}}页
        </span>
    

      

    2. << | 1 | ... | 18 | 19 | 20 | >>

      (1)页码数据的显示

        <ul class="pagination">
            {# 上一页,需要用has_previous方法判断是否有上一页 #}
            <li>
         {# 如果当前blog_list_html有上一页,显示上一页,否则显示当前页 #} <a href="?page= {% if blog_list_html.has_previous %} {{blog_list_html.previous_page_number}} {% else %} {{blog_list_html.number}} {% endif %}" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> {# 遍历所有页码 #} {% for page in pages.page_range %} <li><a href="?page={{page}}">{{page}}</a></li> {% endfor %} {# 下一页,需要用到has_next方法判断是否有下一页 #} <li> <a href="?page= {% if blog_list_html.has_next %} {{blog_list_html.next_page_number}} {% else %} {{blog_list_html.number}} {% endif %}" aria-label="Next"> <span aria-hidden="true">»</span> </a> </li> </ul>

      (2)凸显当前页码

    {# 全部页码 #}
    {% for page_num in page_of_blogs.paginator.page_range %}
      {% if page_num == page_of_blogs.number %}
        <li class='active'><a href="?page={{ page_num }}">{{ page_num }}</a></li>
      {% else %}
        <li><a href="?page={{ page_num }}">{{ page_num }}</a></li>
      {% endif %}
    {% endfor %}
    

      


    注明:学习资料来自“再敲一行代码的个人空间”以及“杨仕航的博客”

        

  • 相关阅读:
    mysql 复制表数据,表结构的3种方法
    MySQL 存储过程使用表名做参数
    关于mysql engine(引擎)的疑问
    mysql存储过程之循环
    mysql 命令大全
    关于mysql的表名/字段名/字段值是否区分大小写的问题
    navicat for mysql 快捷键(原创)
    解决"Subquery returns more than 1 row"sql查询错误
    mysql:“Access denied for user 'root@IP地址'"
    MySQL常用经典语句
  • 原文地址:https://www.cnblogs.com/AngryZe/p/9035253.html
Copyright © 2011-2022 走看看