博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Django实现分页器功能
阅读量:5026 次
发布时间:2019-06-12

本文共 2995 字,大约阅读时间需要 9 分钟。

要使用Django实现分页器,必须从Django中导入Paginator模块

from django.core.paginator import Paginator

假如现在有150条记录要显示,每页显示10条

>>> from django.core.paginator import Paginator#导入Paginator模块>>> list1=[i for i in range(0,150)]#使用列表生成器生成一个包含150个数字的列表>>> page1=Paginator(list1,10)#生成一个Paginator对象>>> print(page1.count)#打印总的记录数,即列表list1的长度150>>> print(page1.num_pages)#打印总的页数,即总记录数除以每页显示的条目数15>>> print(page1.page_range)#页数的列表range(1, 16)>>> print(page1.page(1))#打印第一页的page对象
>>> page1.page(1).object_list#打印第一页的所有记录[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> page1.page(2).object_list#打印第二页的所有记录[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]>>> page1.page(2).next_page_number()#打印当前的页(第2页)的下一页的页码3>>> page1.page(2).has_next()#第2页是否有下一页True>>> page1.page(2).has_previous()#第2页是否有上一页True>>> page1.page(2).has_other_pages()#第2是否有其他页True>>> page1.page(2).start_index()#第2页第一条记录的序号11>>> page1.page(2).end_index()#第2页最后一条记录的序号20>>> page1.page(0)#第0页是否有记录,会报错Traceback (most recent call last): File "
", line 1, in
... raise EmptyPage(_('That page number is less than 1'))django.core.paginator.EmptyPage:
>>> page1.page(15)#打印第15页的对象

例子,使用Django实现一个分页效果

前端代码:

{% load staticfiles %}    
Title

分页器

    #遍历boot_list中的所有元素 {% for book in book_list %} #打印书籍的名称和价格
  • {
    { book.title }} {
    { book.price }}
  • {% endfor %}
    {#上一页按钮开始#} {# 如果当前页有上一页#} {% if book_list.has_previous %} {# 当前页的上一页按钮正常使用#}
    {% else %} {# 当前页的不存在上一页时,上一页的按钮不可用#}
    {% endif %} {#上一页按钮结束#} {# 页码开始#} {% for num in paginator.page_range %} {% if num == currentPage %}
  • {
    { num }}
  • {% else %}
  • {
    { num }}
  • {% endif %} {% endfor %} {#页码结束#} {# 下一页按钮开始#} {% if book_list.has_next %}
    {% else %}
    {% endif %} {# 下一页按钮结束#}

后端代码:

#导入render和HttpResponse模块from django.shortcuts import render,HttpResponse#导入Paginator,EmptyPage和PageNotAnInteger模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger#从Django项目的应用中导入模块from app01.models import *def index(request):    #获取Book数据表中的所有记录    book_list=Book.objects.all()    #生成paginator对象,定义每页显示10条记录    paginator = Paginator(book_list, 10)    #从前端获取当前的页码数,默认为1    page = request.GET.get('page',1)        #把当前的页码数转换成整数类型    currentPage=int(page)    try:        print(page)        book_list = paginator.page(page)#获取当前页码的记录    except PageNotAnInteger:        book_list = paginator.page(1)#如果用户输入的页码不是整数时,显示第1页的内容    except EmptyPage:        book_list = paginator.page(paginator.num_pages)#如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容    return render(request,"index.html",locals())

转载于:https://www.cnblogs.com/renpingsheng/p/7461193.html

你可能感兴趣的文章
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>
用swing做一个简单的正则验证工具
查看>>
百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转
查看>>
pig自定义UDF
查看>>
输入名字显示其生日,没有则让输入生日,做记录
查看>>
爬虫综合大作业
查看>>
Kubernetes 运维学习笔记
查看>>
并查集 经典 畅通工程
查看>>
Spark MLlib 之 Naive Bayes
查看>>
php修改SESSION的有效生存时间
查看>>
spring security 11种过滤器介绍
查看>>
Hibernate一对多、多对一关联
查看>>
一、记录Git使用中遇到的问题及解决方法
查看>>