Django分页功能实现)
Django学习教程十七Django分页功能实现前言1.导入分页类2.修改文章列表视图3.修改列表模板4.添加分页按钮5.访问测试6.常用分页属性7.总结前言上一篇我们实现了文章详情页中的上一篇和下一篇跳转。这一篇我们继续完善博客列表页实现分页功能。如果博客文章比较多全部显示在一个页面中就不太合适所以需要分页展示。1.导入分页类Django中提供了Paginator类可以用来实现分页。代码from django.core.paginator import Paginator2.修改文章列表视图打开views.py文件修改article_list方法。代码from django.shortcuts import render from django.core.paginator import Paginator from .models import Article def article_list(request): articles Article.objects.all().order_by(-created_time) paginator Paginator(articles, 5) page_number request.GET.get(page) page_obj paginator.get_page(page_number) return render(request, blog/article_list.html, {page_obj: page_obj})这里的Paginator(articles, 5)表示每页显示5条数据。request.GET.get(page)表示获取地址栏中的page参数。3.修改列表模板article_list.html中遍历page_obj。代码{% for article in page_obj %} div classcard mb-3 div classcard-body h5 classcard-title{{ article.title }}/h5 p classcard-text{{ article.content }}/p a href/article/{{ article.id }}/ classbtn btn-primary查看详情/a /div /div {% endfor %}4.添加分页按钮在文章列表下面添加分页。代码nav ul classpagination {% if page_obj.has_previous %} li classpage-item a classpage-link href?page{{ page_obj.previous_page_number }}上一页/a /li {% endif %} li classpage-item active span classpage-link {{ page_obj.number }} /span /li {% if page_obj.has_next %} li classpage-item a classpage-link href?page{{ page_obj.next_page_number }}下一页/a /li {% endif %} /ul /nav5.访问测试访问首页http://127.0.0.1:8000/访问第二页http://127.0.0.1:8000/?page2如果文章数量超过每页显示数量就可以看到分页效果。6.常用分页属性常用分页属性有page_obj.has_previous 是否有上一页page_obj.previous_page_number 上一页页码page_obj.has_next 是否有下一页page_obj.next_page_number 下一页页码page_obj.number 当前页码7.总结这一篇我们学习了Django中的分页功能主要使用了Paginator类。分页功能在博客、电商、后台管理系统中都非常常见大家可以多敲几遍代码加深理解。好了这一篇就到这里下一篇我们继续学习实现最近文章列表如果对你有帮助点赞加关注下篇见。