Python Django 实现首页、尾页、上一页、下一页分页功能的代码示例
149 浏览量
更新于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 上传
2023-05-13 上传
2023-05-17 上传
2023-07-15 上传
2023-08-11 上传
2023-09-27 上传
2023-04-01 上传
2023-11-25 上传
weixin_38675232
- 粉丝: 3
- 资源: 970
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展