[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)凸显当前页码

    {# 设置凸显当前的页码 #}
    <script type="text/javascript">
        $(".pagination li:eq({{blog_list_html.number}})").addClass("active");
    </script>

  

    

猜你喜欢

转载自www.cnblogs.com/AngryZe/p/9035253.html
今日推荐