django的分页器
Django中分页器的使用
django分页器模块
#分页器
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
分页器常用方法:
def index(request):
book_list=Book.objects.all()
#实例化分页器对象,第二个对象是每页最大条数
paginator=Paginator(book_list,21)
#三个静态方法
print('count',paginator.count) #数据总数
print('num_pages',paginator.num_pages) #总页数
print('page_range',paginator.page_range) #页码范围,相当于(1,总页数+1)
#取某一页的page对象
page1=paginator.page(1) #第一页的page对象
#遍历第一页的数据对象的两种方式
for i in page1:
print(i)
print(page1.object_list) page2=paginator.page(2)
print(page2.has_next()) #是否有下一页
print(page2.next_page_number()) #下一页的页码
print(page2.has_previous()) #是否有上一页
print(page2.previous_page_number()) #上一页页码 return render(request,'index.html',locals())
正式建一个分页器:
views:
from django.shortcuts import render,redirect
from .models import *
#分页器
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
# Create your views here. def add(request):
#数据库批量添加
book_list=[]
for i in range(500):
book_obj=Book(title='book%s'%i,price=i)
book_list.append(book_obj)
Book.objects.bulk_create(book_list)
return redirect('/index/') def index(request): current_page_num=int(request.GET.get('page',1))
book_list = Book.objects.all()
paginator=Paginator(book_list,11)
page=paginator.page(current_page_num)
html(利用bootstrap框架):
<body>
<ul>
{% for book in page %}
<li>{{ book.pk }}--{{ book.title }}--{{ book.price }}</li>
{% endfor %}
</ul>
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="?page={{ current_page_num|add:-1 }}" aria-label="Previous">上一页</a>
</li>
{% for num in paginator.page_range %}
{% if current_page_num == num %}
<li class="active">
<a href="?page={{ num }}">{{ num }}</a>
</li>
{% else %}
<li>
<a href="?page={{ num }}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{# 下一页#}
{% if page.has_next %}
<li>
<a href="?page={{ current_page_num|add:1 }}" aria-label="Next">下一页</a>
</li>
{% else %}
<li class="disabled">
<a href="#" aria-label="Next">下一页</a>
</li>
{% endif %} </ul>
</nav> </body>
页数比较多时,不一一显示:
可以加一段逻辑
def index(request):
current_page_num=int(request.GET.get('page',1))
book_list = Book.objects.all()
paginator=Paginator(book_list,11)
num_pages=paginator.num_pages
#总页数过多时,不一一显示
if num_pages>11:
if current_page_num<6:
page_range=range(1,12)
elif current_page_num>num_pages-5:
page_range=range(num_pages-10,num_pages+1)
else:
page_range=range(current_page_num-5,current_page_num+6)
else:
page_range=paginator.page_range
page=paginator.page(current_page_num)
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的分页器(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 ...
随机推荐
- C# 反射的深入了解
Assembly.Load("")的使用说明如下; 并不是命名空间.常用的是程序集名称,也就是dll的名称 关于反射Assembly.Load("程序集" ...
- Android 1.6 PackageParser.java 源码分析
文件目录: android-1.6_r2\frameworks\base\core\java\android\content\pm\PackageParser.java # PackageParser ...
- sencha touch 2.2.1 自定义彩色图标按钮(button+ico)
sencha touch 2.2.1 这个版本使用了新的按钮模式,不过他只提供了少部分的按钮样式.我们可以加一些自定义的ico样式 新加ico样式lower .x-button .x-button-i ...
- yum配置与使用(很详细)
yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件.一.yum的配置文件 $ cat /etc/yum ...
- nginx 日志文件
默认日志格式 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status ...
- CF 217A Ice Skating
A. Ice Skating time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Excel 2007表格内输入http取消自动加上超链接的功能
经常使用Excel表格工作的也许会发现,当我们在表格内输入http://XXXX时,默认情况下都会自动加上超链接,如下: 当我们点击域名准备编辑修改时,往往都会调用浏览器转到该域名之下,达不到编辑修改 ...
- Unity3D笔记 切水果 一
最终效果: 一.选择背景图片,选择GUI Texture 二.创建一个空的GameObject,然后添加背景音乐 三.创建GUISkin 四.主要代码 #pragma strict var myGUI ...
- iptables黑/白名单设置(使用ipset 工具)
ipset介绍 ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以 ...
- easyui---easyloader.js
1.easyloader.js 是根据用户指定,动态加载组件,可以替换下面jqueryeasyui <!-- <script type="text/javascript" ...