django之分页器
view
- from django.shortcuts import render,HttpResponse
- # Create your views here.
- from app01.models import *
- from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
- def index(request):
- '''
- 批量导入数据:
- Booklist=[]
- for i in range(100):
- Booklist.append(Book(title="book"+str(i),price=30+i*i))
- Book.objects.bulk_create(Booklist)
- '''
- '''
- 分页器的使用:
- book_list=Book.objects.all()
- paginator = Paginator(book_list, 10)
- print("count:",paginator.count) #数据总数
- print("num_pages",paginator.num_pages) #总页数
- print("page_range",paginator.page_range) #页码的列表
- page1=paginator.page(1) #第1页的page对象
- for i in page1: #遍历第1页的所有数据对象
- print(i)
- print(page1.object_list) #第1页的所有数据
- page2=paginator.page(2)
- print(page2.has_next()) #是否有下一页
- print(page2.next_page_number()) #下一页的页码
- print(page2.has_previous()) #是否有上一页
- print(page2.previous_page_number()) #上一页的页码
- # 抛错
- #page=paginator.page(12) # error:EmptyPage
- #page=paginator.page("z") # error:PageNotAnInteger
- '''
- book_list=Book.objects.all()
- paginator = Paginator(book_list, 10)
- page = request.GET.get('page',1)
- currentPage=int(page)
- try:
- print(page)
- book_list = paginator.page(page)
- except PageNotAnInteger:
- book_list = paginator.page(1)
- except EmptyPage:
- book_list = paginator.page(paginator.num_pages)
- return render(request,"index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})
index.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
- integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- </head>
- <body>
- <div class="container">
- <h4>分页器</h4>
- <ul>
- {% for book in book_list %}
- <li>{{ book.title }} -----{{ book.price }}</li>
- {% endfor %}
- </ul>
- <ul class="pagination" id="pager">
- {% if book_list.has_previous %}
- <li class="previous"><a href="/index/?page={{ book_list.previous_page_number }}">上一页</a></li>
- {% else %}
- <li class="previous disabled"><a href="#">上一页</a></li>
- {% endif %}
- {% for num in paginator.page_range %}
- {% if num == currentPage %}
- <li class="item active"><a href="/index/?page={{ num }}">{{ num }}</a></li>
- {% else %}
- <li class="item"><a href="/index/?page={{ num }}">{{ num }}</a></li>
- {% endif %}
- {% endfor %}
- {% if book_list.has_next %}
- <li class="next"><a href="/index/?page={{ book_list.next_page_number }}">下一页</a></li>
- {% else %}
- <li class="next disabled"><a href="#">下一页</a></li>
- {% endif %}
- </ul>
- </div>
- </body>
- </html>
扩展:
- def index(request):
- book_list=Book.objects.all()
- paginator = Paginator(book_list, 15)
- page = request.GET.get('page',1)
- currentPage=int(page)
- # 如果页数十分多时,换另外一种显示方式
- if paginator.num_pages>11:
- if currentPage-5<1:
- pageRange=range(1,11)
- elif currentPage+5>paginator.num_pages:
- pageRange=range(currentPage-5,paginator.num_pages+1)
- else:
- pageRange=range(currentPage-5,currentPage+5)
- else:
- pageRange=paginator.page_range
- try:
- print(page)
- book_list = paginator.page(page)
- except PageNotAnInteger:
- book_list = paginator.page(1)
- except EmptyPage:
- book_list = paginator.page(paginator.num_pages)
- return render(request,"index.html",locals())
django之分页器的更多相关文章
- 使用Django实现分页器功能
要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页 ...
- 【django之分页器】
一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页print("count:&qu ...
- django自定义分页器
一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...
- Django组件-分页器
Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...
- Django框架----分页器(paginator)
Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...
- django的分页器
Django中分页器的使用 django分页器模块 #分页器 from django.core.paginator import Paginator,EmptyPage,PageNotAnIntege ...
- Django组件(一) Django之分页器
Django的分页器(paginator)简介 在页面显示分页数据,需要用到Django分页器组件 from django.core.paginator import Paginator Pagina ...
- Django 组件-分页器
Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...
- Django - 文件上传、Django组件 - 分页器(paginator)
一.文件上传准备知识 - Content-Type 1.请求头 - Content-Type Content-Type指的是请求体的编码类型,常见的类型共有3种: 1)application/x-ww ...
- Django 进阶(分页器&中间件)
分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views h ...
随机推荐
- Unity内存存储揭秘
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- Vim技能修炼教程(12) - Vim的脚本语言支持
Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...
- IOS开发 Missing submodule 'XXXX' 警告
项目结构 如下图 target -> ssssssss 是个Framework&library 出现的警告 Missing submodule 'XXXXXX' 只要在 ssssssss ...
- 在FP与DDD的道路上越走越远
托辞 最近一口气读了若干本FP方面的书,可人是越来越懒了,要整理个什么东西却也没有那个精力,所以简单扔几张图,算是给自己一个提醒吧. 在此期间,我用并不纯熟的Scala和Groovy练了一把手.虽然只 ...
- boost::function和boost:bind取代虚函数
以boost::function和boost:bind取代虚函数 这是一篇比较情绪化的blog,中心思想是"继承就像一条贼船,上去就下不来了",而借助boost::function ...
- BZOJ1816 Cqoi2010 扑克牌【二分答案】
BZOJ1816 Cqoi2010 扑克牌 Description 你有n种牌,第i种牌的数目为ci.另外有一种特殊的牌:joker,它的数目是m.你可以用每种牌各一张来组成一套牌,也可以用一张jok ...
- sublime自动格式化代码插件HTML-CSS-JS Prettify安装
sublime自动格式化代码插件HTML-CSS-JS Prettify安装 问题: 用 Sublime Text 格式化代码(安装 HTML-CSS-JS Prettify 插件)时,格式化时却会提 ...
- lapis http verb 处理
1. 同一个url 包含不同的请求(respond_to 进行解决) // 路由格式 match ,通过respond_to 进行实际的http verb 处理 local lapis = requ ...
- oracle表空间维护常用命令
---查看表空间的名字及文件所在位置: select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spac ...
- bzoj3258秘密任务
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3258 因为只走最短路,所以先正反两遍djkstra,新建边. 这里的边是单向边.所以要用原来 ...