Django2.1中的分页功能详解

django的分页功能类将我们常用的多种方法均封装在Paginator类,根据这些方法我们均可深度定制我们的分页功能。

首先来看看[Paginator] 类的构造方法:

class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)

必选参数:

  1. objects_list : 必须是列表/元组或Django所生成的QuerySet对象,或具有count()__len __()方法的其他可切片对象。
  2. per_page: 每页显示多少个数量,是一个整数

可选参数:

  1. orphans: 默认值为零,无论最后一页剩余多少条数据,都另起一页,否则将剩余的合并到上一页,举例:假如当前分页一共11页,第11页的只有两条数据,那么我们定义orphans=2,则分页总数剩余10页,最后两条数据合并到第10页。
  2. allow_empty_first_page: 是否允许第一页为空。 如果为False同时object_list为空,则将引发EmptyPage错误,默认值为True.

Paginator的方法,2.0版后新增:

  1. Paginator.get_page(number) 方法:返回当前页页码,并具有处理超出页码范围和无效页码的状况,页码不是数字返回第一页,超出返回最后一页
  2. Paginator.page(number)方法: 返回指定页码的内容,如果给定的页码不存在,则引发InvalidPage。

属性:

  1. Paginator.count: 所有页面中的对象总数。
  2. Paginator.num_pages: 分页总数
  3. Paginator.page_range: 迭代页码,返回的是一个[1,2,3,4,...]这样的列表。

了解了上边这些之后我们既可以在模板中直接使用Page对象所提供的方法,直接使用!

Page objects对象中的方法及属性:

  1. Page.has_next()如果有下一页返回True.
  2. Page.has_previous() 如果有上一页返回True.
  3. Page.has_other_pages() 如果同时具有上下页返回True.
  4. Page.next_page_number() 返回下一页的页码.
  5. Page.previous_page_number() 返回上一页的页码.
  6. Page.start_index() 返回当前页面的第一条数据.
  7. Page.end_index() 返回当前页的最后一条数据

属性

  1. Page.object_list 此页上的对象列表。
  2. Page.number此页的基于 1 的页码。
  3. Page.paginator关联的 Paginator 对象。

案例详解:

# views.py

from django.core.paginator import Paginator

def list(request):
    LIST = []
    for i in range(1,102):
        LIST.append(i)
    paginator = Paginator(LIST, 10, orphans=2, )
    pages = paginator.page_range  #  生成所有页码
    pages_num = paginator.num_pages # 总也数
    gd_page = paginator.page(5)  # 调用指定页面的内容
    page = request.GET.get('page')  # 当前页面
    contacts = paginator.get_page(page)  # 当前页并具有处理超出页码范围的状况,页码不是数字返回第一页,超出返回最后一页
    return render(request, 'notes/list.html',{'contacts':contacts, 'pages':pages, 'pagenums':pages_num, 'gd_page':gd_page})
# list.html

 {% for contact in contacts %}
        <li>{{ contact|upper }}</li>
    {% endfor %}

    <h1>分页练习</h1>

{% if contacts.has_previous %}
    <li>上一页页码:{{ contacts.previous_page_number }}</li>
    <a href="?page={{ contacts.previous_page_number }}">上一页</a>
{% endif %}
    <li>当前页码:{{ contacts.number }}</li>
{% if contacts.has_next %}
    <li>下一页页码:{{ contacts.next_page_number }}</li>
    <a href="?page={{ contacts.next_page_number }}">下一页</a>
{% endif %}

    {{ contacts.start_index }}
    {{ contacts.end_index }}

   <p> 所有页码:</p>
    <div class="pagetions">

{% for page in pages %}
    {% if page == contacts.number %}
        <a class="active" href="?page={{ page }}">{{ page }}</a>
    {% else %}
        <a href="?page={{ page }}">{{ page }}</a>
    {% endif %}
{% endfor %}

</div>
总页数:{{ pagenums }}
{% for gd in gd_page %}
   <li>{{ gd }}</li>
    {% endfor %}
给定页码:{{ gd_page }}

创作不易,我会持续分享关于Django的相关知识,有兴趣的朋友可以关注本人微信公众号:幸福关中, 如果您觉得不错的话,打赏以下小编,小编会更有动力分享更多关于Django方面的知识,欢迎大家加小编微信交流Django知识,备注Django,小编微信:xingfuguanzhong。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • 1.HTTP 1.1全局规范 URLURL的组成:基本的网络地址 + 分支节点http://172.19.201....
    zlcook阅读 866评论 0 0
  • (一) “先处战地而待敌者佚,后处战地而趋战者劳,故善战者,致人而不致于人”(出自《孙子 虚实篇》)。 意思是:先...
    做一个更好的普通人阅读 469评论 0 0
  • 从PHP 基础教程,PHP 表单,PHP 高级教程。PHP 的基本就学完了。接下来就会给大家介绍的是MySQL 部...
    林路同阅读 550评论 0 1
  • 打开手机,发现妖群有信号,急着进去。看到姐妹们的照片,第一眼就是美,接下来就是舒服的美!这里没有电影明...
    静起风云阅读 158评论 2 3