1 2 3 4 5 6 7 8 9 10 11 12 13 14 | blog /views .py from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger #导入分页插件包 def list(request,lid): ... page = request.GET.get( 'page' ) #在URL中获取当前页面数 paginator = Paginator(list, 5) #对查询到的数据对象list进行分页,设置超过5条数据就分页 try: list = paginator.page(page) #获取当前页码的记录 except PageNotAnInteger: list = paginator.page(1) #如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: list = paginator.page(paginator.num_pages) #如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'list.html' , locals())------------------------------------------------------------------ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | templates /list .html <div class= "pagination" > <ul> <li class= "prev-page" >< /li > <li class= "active" ><span>1< /span >< /li > <li><a href= "?page=2" >2< /a >< /li > <li class= "next-page" ><a href= "?page=2" >下一页< /a >< /li > < /ul > < /div > 修改为: <div class= "pagination" > <ul> {% if list.has_previous %} <li class= "prev-page" ><a href= "?page={{ list.previous_page_number }}" >上一页< /a >< /li > {% else %} <li class= "prev-page" >< /li > {% endif %} {% for num in list.paginator.page_range %} {% if num %} {% ifequal num list.number %} <li class= "active" ><span>{{ num }}< /span >< /li > {% else %} <li><a href= "?page={{ num }}" >{{ num }}< /a >< /li > {% endifequal %} {% else %} <li class= "disabled" ><span>...< /span >< /li > {% endif %} {% endfor %} {% if list.has_next %} <li class= "next-page" ><a href= "?page={{ list.next_page_number }}" >下一页< /a >< /li > {% else %} <li class= "prev-page" >< /li > {% endif %} < /ul > < /div >-------------------------------------- |
{# 如果 a1 == a2 则显示 #}
{% ifequal a1 a2 %}
<h1>equal!</h1>
{% else %}
<h1>not equal!</h1>
{% endifequal %}
---------------------
1 | list.number 为list = paginator.page(page) #获取当前页码的记录,list获得的number方法 |
1 | {% for num in list.paginator.page_range %}中的 |
附:Paginator类的解释,方法,属性
class Paginator(object):
def __init__(self, object_list, per_page, orphans=0,
allow_empty_first_page=True):
self.object_list = object_list
self.per_page = int(per_page)
self.orphans = int(orphans)
self.allow_empty_first_page = allow_empty_first_page
self._num_pages = self._count = None
---------------------
1.根据其定义做出以下解释:
object_list:可以是列表,元组,查询集或其他含有 count() 或 len()方法的可切片对象。对于连续的分页,查询集应该有序,例如有order_by()项或默认ordering参数。
per_page:每一页中包含条目数目的最大值,不包括独立成页的那页。(见下面 orphans参数解释)。
orphans=0:当你使用此参数时说明你不希望最后一页只有很少的条目。如果最后一页的条目数少于等于orphans的值,则这些条目会被归并到上一页中(此时的上一页变为最后一页)。例如有23项条目, per_page=10,orphans=0,则有3页,分别为10,10,3.如果orphans>=3,则为2页,分别为10,13。
allow_empty_first_page=True: 默认允许第一页为空。
2.类方法:
Paginator.page(number):根据参数number返回一个Page对象。(number为1的倍数)
1
3.类属型:
Paginator.count:所有页面对象总数,即统计object_list中item数目。当计算object_list所含对象的数量时, Paginator会首先尝试调用object_list.count()。如果object_list没有 count() 方法,Paginator 接着会回退使用len(object_list)。
Pagnator.num_pages:页面总数。
pagiator.page_range:页面范围,从1开始,例如[1,2,3,4]。
---------------------
作者:The Winslow Accord
来源:CSDN
原文:https://blog.csdn.net/kasumiutaha/article/details/85077081
版权声明:本文为博主原创文章,转载请附上博文链接!
1 | |
1 | <br><br><br><br> |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档