Python Django 实现首页、尾页、上一页、下一页分页功能的代码示例
73 浏览量
更新于2024-08-31
收藏 116KB PDF 举报
Python Django 添加首页尾页上一页下一页代码实例
Python Django 框架是当前最流行的 Web 开发框架之一,具有强大、灵活、可扩展等特点。在 Web 开发中,一般来说,都是通过分页来展示大量的数据,以便于用户的浏览和查询。今天,我们就来学习如何在 Python Django 中添加首页、尾页、上一页和下一页的代码实例。
添加首页和尾页
在 Django 中,我们可以通过在 views.py 文件中定义一个视图函数来实现分页的功能。下面是一个简单的示例代码:
```
from django.shortcuts import render
from app01 import models
def book_list(request):
# 从 URL 中取参数
page_num = request.GET.get("page")
print(page_num, type(page_num))
page_num = int(page_num)
# 定义两个变量保存数据从哪儿取到哪儿
data_start = (page_num - 1) * 10
data_end = page_num * 10
# 书籍总数
total_count = models.Book.objects.all().count()
# 每一页显示多少条数据
per_page = 10
# 总共需要多少页码来显示
total_page, m = divmod(total_count, per_page)
# 页面上最多展示的页码
max_page = 11
half_max_page = max_page // 2 # 页面上展示的页码的开始页
page_start = page_num - half_max_page
page_end = page_num + half_max_page
# 如果当前页减一半比 1 小
if page_start <= 1:
page_start = 1
page_end = max_page
# 如果当前页加一半比总页码还大
if page_end > total_page:
page_end = total_page
page_start = total_page - max_page + 1
# 如果还有数据
if m:
total_page += 1
all_book = models.Book.objects.all()[data_start:data_end]
# 拼接 html 的分页代码
html_list = []
# 添加首页按钮
html_list.append('<li><a href="/books/?page=1" rel="external nofollow">首页</a></li>')
...
```
在上面的代码中,我们首先定义了一个视图函数 `book_list`,该函数将处理分页的逻辑。我们通过 `request.GET.get("page")` 获取当前页码,然后根据当前页码计算出数据的起始和结束位置。接着,我们计算出总共需要多少页码来显示,并根据当前页码计算出页面上展示的页码的开始页和结束页。最后,我们拼接出 html 的分页代码,并将首页按钮添加到 html 列表中。
添加上一页和下一页
添加上一页和下一页按钮与添加首页按钮类似,我们只需要在 html 列表中追加上一页和下一页的按钮代码即可。下面是完整的代码:
```
...
# 添加上一页按钮
if page_num > 1:
html_list.append('<li><a href="/books/?page={}" rel="external nofollow">上一页</a></li>'.format(page_num - 1))
# 添加下一页按钮
if page_num < total_page:
html_list.append('<li><a href="/books/?page={}" rel="external nofollow">下一页</a></li>'.format(page_num + 1))
# 添加尾页按钮
html_list.append('<li><a href="/books/?page={}" rel="external nofollow">尾页</a></li>'.format(total_page))
```
总结
在本文中,我们学习了如何在 Python Django 中添加首页、尾页、上一页和下一页的代码实例。通过这篇文章,我们可以了解到 Django 中的分页机制,并掌握如何实现基本的分页功能。同时,本文也提供了一个完整的示例代码,供大家参考和学习。
2020-12-22 上传
2020-12-20 上传
点击了解资源详情
2020-09-18 上传
2020-09-21 上传
2020-09-21 上传
2020-12-24 上传
2020-09-18 上传
2020-09-08 上传
weixin_38675232
- 粉丝: 3
- 资源: 970
最新资源
- 10-days-of-statistics:使用Python(numpy)从Hackerrank练习10天的统计信息。 关联
- Comparison-of-Student-Grants-using-VBA:使用VBA的数据透视表和数据透视图报告,用于比较两所大学的助学金。 该代码是美国俄亥俄州辛辛那提大学的专有作品。 这只能用于学术目的。 复制此课程的任何部分均需获得作者的许可
- hwnd-adorner:WPF库支持由HwndHost托管的任何hwnd上的层(修饰)
- revues:解析Cairn.info日记元数据
- 算法:《剑指提供》,《程序员代码面试指南》,Leetcode等算法衔接集合。基于.net core的控制台程序,C#实现,包含每道译文的完整描述,多种解法AC代码,以及解主题算法,所有回归正确直接运行以查看输出结果。常用算法汇总中每个算法同样有测试用例,可运行
- js代码-浅拷贝和深拷贝的实现
- 个人网站ADVC58
- nano-2.1.9.tar.gz
- StyleableToast
- Nasty Armoured Tanks of War-开源
- Eatery
- ReCiter:ReCiter:用于学术机构的企业开源作者歧义消除系统
- shirayuki:最没用的Discord机器人
- nano-2.7.2.tar.gz
- java代码-任意给出一个十进制整数,将十进制整数转换为二进制数。
- image2:与其他图像一起包装图像类型