Diango博客--16.稳定易用的 Django 分页库,完善分页功能(二)

本文介绍了如何利用Django第三方库django-pure-pagination改进分页功能,包括分页效果概述、实现思路、库的安装与使用,以及自定义模板以满足更复杂的分页展示需求。
摘要由CSDN通过智能技术生成

0.思路引导

1)在前面我们通过 Django Pagination 实现简单分页 中,我们实现了一个简单的分页导航。但效果有点差强人意,我们只能点上一页和下一页的按钮进行翻页。

2)比较完善的分页效果应该像下面这样,但想实现这样一种效果,Django Pagination 内置的 API 已无能为力。

3)接下来我们将通过拓展 Django Pagination 来实现下图这样比较完善的分页效果。
在这里插入图片描述

1.分页效果概述

一个比较完善的分页效果应该具有以下特性:

  • 始终显示第一页和最后一页。
  • 当前页码高亮显示。
  • 显示当前页码前后几个连续的页码。
  • 如果两个页码号间还有其它页码,中间显示省略号以提示用户。

2.分页思路

如果需要自己来实现分页效果,我们会怎么做呢?先来分析一下导航条的组成部分,可以看到整个分页导航条其实可以分成 7 个部分:

  • 第 1 页页码,这一页需要始终显示。
  • 第 1 页页码后面的省略号部分。但要注意如果第 1 页的页码号后面紧跟着页码号 2,那么省略号就不应该显示。
  • 当前页码的左边部分,比如这里的 3-4。
  • 当前页码,比如这里的 5。
  • 当前页码的右边部分,比如这里的 6-7。
  • 最后一页页码前面的省略号部分。但要注意如果最后一页的页码号前面跟着的页码号是连续的,那么省略号就不应该显示。
  • 最后一页的页码号。

因此我们的思路是,在视图中依据上述规则生成页码列表,然后在模板中循环显示页码列表就可以了。

有了思路,实现起来其实也并不很难。不过对于这类常见需求,别人早就帮我们实现好了,本着不重复造轮子的原则,直接拿来用就好。

3.Django 第三方拓展:django-pure-pagination

我们第一次开始接触 django 第三方拓展,在此之前我们一直都基于 django 本身我们提供的功能在开发,然而 django 强大的地方就在于海量的第三方应用供我们挑选,几乎大部分 web 开发中的需求,django 都能找到他人已经写好的第三方应用,拿来即用。

事实上,正确的 django 开发姿势应该是这样的:

  • 充分理解你的需求,想一想,如果自己实现,我会怎么做?
  • 通过 Google、GitHub、开发者社区论坛等调研已有的实现类似需求的应用
  • 拿来即用,并尝试理解他人是如何实现这个功能的

首先我们上面分析了分页需求的实现。然后我在 GitHub 上通过 django pagination 关键词进行搜索,在比较了多个 star 数比较高的项目后,发现 django-pure-pagination 文档最清晰,使用最简单,因此决定将这个应用集成到我们的博客来。值得一提的是,尽管这个应用显示作者最后一次更新代码在 4 年前,但我粗略浏览了一下源码,发现其依赖的 django api 4 年来异常稳定,所以确保能在 django 2.2 中使用。

具体的源代码请戳这里,根据教程,做以下扩展:

1)首先安装它:

$ pipenv install django-pure-pagination

2)然后将它注册到 INSTALLED_APPS 里:

INSTALLED_APPS = [
    # ...
    'pure_pagination',  # 分页

    'blog.apps.BlogConfig',  # 注册 blog 应用
    'comments.apps.CommentsConfig',  # 注册 comments 应用
]

3)修改 IndexView,让它继承 django-pure-pagination 提供的 PaginationMixin,这个混入类将为我们提供上述提到的分页功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值