Django框架之Paginator分页组件

前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

Paginator分页组件

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

Paginator(object_list)
# 创建分页对象

分页对象内置属性

all_ = models.objects.all()
p = Paginator(all_, 10)
# 分页all_数据,每页显示10条数据
p.count # 总数据量
p.num_pages() # 分页数
p.page_range() # 列表形式返回当前可有的页数 [1,2,3]
page_1 = p.page(1) # 选择第一页,返回第一页数据对象
page_1.object_list # 返回第一页所有数据
for var in page_1:
    print(var)
A
B
C
...

某一页内置属性

page_1.number # 当前页的页码
page_1.has_next() # 是否有下一页
page_1.has_previous() # 是否有上一页
page_1.has_other_pages() # 是否含有其他页
page_1.next_page_number() # 下一页的页码
page_1.previous_page_number() # 上一页的页码
page_1.start_index() # 该页第一个数据的索引
page_1.end_index() # 该页最后一个数据的索引
  • EmptyPage:取不到页面数据,抛出该异常

    all_ = models.objects.all()
    p = Paginator(all_, 10)
    try:
        list_ = p.page(page_num)
    except EmptyPage:
    	#没有第page_num页
        list_ = paginator.page(1) # 取不到该也数据,直接返回第一页数据
    
  • PageNotAnInteger:当页数是一个非整数类型时,抛出该异常

模板页面基本使用方式

{% if topic_list.has_previous %}
	<!-- 当前页是否含有上一页 -->
	<a href="?page={
   
   { list_.previous_page_number }}">上一页</a>
	<!-- 连接传参形式传递上一页的页码ID -->
{% endif %}

{% if topic_list.has_next %}
	<!-- 当前页是否含有下一页 -->
    <a href="?page={
   
   { list_.next_page_number }}">下一页</a>
    <!-- 连接传参形式传递下一页的页码ID -->
{% endif %}

猜你喜欢

转载自blog.csdn.net/HeroicLee/article/details/121406474