Python Django 实现首页、尾页、上一页、下一页分页功能的代码示例

0 下载量 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 中的分页机制,并掌握如何实现基本的分页功能。同时,本文也提供了一个完整的示例代码,供大家参考和学习。