django中paginator与page用法

官方文档连接地址为:https://docs.djangoproject.com/en/2.1/topics/pagination/

在创建分页前先导入模块;

from django.core.paginator import Paginator

paginator对象:

创建格式为:

blogs = Blog.objects.all()
paginator = Paginator(blogs,10)#实例化一个分页对象,设置每一页显示10条 

这里创建分页的同时时一般需要注意下我们在models.py是否这是默认排序,否则会弹出提示信息。

django中paginator与page用法_第1张图片

 

paginator属性:

  • Paginator.count----所有页面中对象的总数

  • Paginator.num_pages----总页数

  • Paginator.page_range----页码迭代器

 

paginator方法:

Paginator.get_page(number)此方法为2.0新方法。

返回Page具有给定的从1开始的索引对象,同时还处理超出范围和无效页码,如果页码不是数字,则返回第一页。如果页码为负数或大于页数,则返回最后一页。

 

 

 

Page对象:

paginator对象的get_page(num)方法返回得到Page对象

page1 = paginator.get_page(1)

Page属性:

  • Page.object_list----此页面上的对象列表。

  • Page.number----此页面上从1开始页码。

  • Page.paginator----关联paginator对象。

django中paginator与page用法_第2张图片

Page方法:

  • Page.has_next()

True如果有下一页则返回。

  • Page.has_previous()

True如果有上一页,则返回

  • Page.has_other_pages()

True如果有下一页上一页,则返回。

  • Page.next_page_number()

返回下一页编号。InvalidPage如果下一页不存在则引发。

  • Page.previous_page_number()

返回上一页编号。InvalidPage如果前一页不存在则引发。

  • Page.start_index()

返回页面上第一个对象的从1开始的索引,相对于分页器列表中的所有对象。例如,当为每页包含2个对象的5个对象的列             表进行分页时,start_index()将返回第二个页面 3

  • Page.end_index()

返回页面上最后一个对象的从1开始的索引,相对于分页器列表中的所有对象。例如,当为每页包含2个对象的5个对象的             列表进行分页时,end_index()将返回第二个页面 4

  • Page.previous_page_number()

               返回上一页

  • Page.next_page_number()

              返回下一页

 

paginator在views.py中使用:

def blog_list(request):
   blogs_all_list = Blog.objects.all()
   paginator = Paginator(blogs_all_list,10)
   page_num = request.GET.get('page', 1)
   page_of_blogs = paginator.get_page(page_num)
   blog_types = BlogType.objects.all()
   #blogs_counts = Blog.objects.all().count()
   return render(request,'myseit/blog_list.html',{'blog_types':blog_types,'page_of_blogs':page_of_blogs,'paginator':paginator})

在html文件中使用:

 
{% block list_with_type %}博客列表(一共有{{ page_of_blogs.paginator.count }}博客){% endblock %}

 

 

 

 

 

 

你可能感兴趣的:(django)