django分页器

在搭建一个博客的时候,假设我们先写好几篇博客保存。刷新页面后我们就会看到这几篇博客。

但是如果有非常多的博客的话,我们需要一直往下拉才能看到剩下的博客,这样其实不太好。

所以在搭建博客的时候,django提供了一个分页器,叫paginator。

我们在在代码中导入

from django.core.paginator import Paginator

显然Paginator是一个类,所以我们可以通过

paginator = Paginator(object_list,page_number)来创建一个分页器,下面解释两个参数

object_list:这个是所有博客的数量

page_num:这个是你想分成一页多少篇博客,假设object_list=30,page_num=10,那么paginator就是一个包含了三个页面的对象,每个页面有10篇博客。

django分页器

看到page_num = request.GET.get('page',1)

这句代码是用来获取我们的网址链接上的参数page的值,如果是非法值比如a,b,c这些,那么则默认参数为1.

再看page_of_blogs = paginator.get_page(page_num)

page_num = request.GET.get('page',1)首先获取页码,

page_of_blogs = paginator.get_page(page_num)再获取页码对应的十篇博客。

django分页器

看到这里可能会想这个跟在page_of_blogs后面的paginator.count和obeject_list是什么。

我们先通过python manage.py shell进入django相关的编程环境,并输入以下代码。

from blog.models import Blog

from django.core.paginator import Paginator

blogs_all_list = Blog.objects.all()               #这里只要知道是获取所有的博客就行了

paginator = Paginator(blogs_all_list,10)     #将所有博客进行分页,分成一页10篇博客

page_of_blogs = paginator.get_page(1)     #获取第一页的所有博客

 

好了,接下来的这一步就是关键,我们先输入dir(page_of_blogs),回车看看结果(图里的dir(page_of_list是我打错了,请不要介意。))

django分页器

我们看到这个列表的倒数第三和第四个,分别是paginator和object_list,所以我们很清楚的知道这是page_of_blogs自带的一些方法。

我们在看看dir(paginator)

django分页器

看到倒数第二行的倒数第三个有个count

综上,所以page_of_blogs.paginator.count就是这一页对应的分页器它包含的所有博客的数量

page_of_blogs.object_list就是这一页博客所包含的博客数量,也就是10篇