这篇文章主要介绍了Python 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(‘
- 首页
- ’)
展示的页码
for i in range(page_start, page_end + 1):
tmp = ‘ - {0}
- ’.format(i)
html_list.append(tmp)添加尾页按钮
html_list.append(‘
- 尾页
- ’.format(total_page))
page_html = “”.join(html_list) # 拼接 html 的分页代码
return render(request, “book_list.html”, {“books”: all_book, “page_html”: page_html})book_list.html:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>书籍列表</title> <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" > </head> <body> <div class="container"> <table class="table table-bordered"> <thead> <tr> <th>序号</th> <th>id</th> <th>书名</th> </tr> </thead> <tbody> {% for book in books %} <tr> <td>{ { forloop.counter }}</td> <td>{ { book.id }}</td> <td>{ { book.title }}</td> </tr> {% endfor %} </tbody> </table> <nav aria-label="Page navigation"> <ul class="pagination"> <li> { { page_html|safe }} </li> </ul> </nav> </div> </body> </html>
运行结果:
添加上一页、下一页: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