Django分页解析
分页
django中实现管理数据分页的类位于 django.core.paginator.py中
Paginator类
对列表数据进行分页处理
对象
Paginator(Post.objects.all(),3)
Paginator(列表,int) 返回分页对象,专门处理分页(list集合,每页的数量)
属性
count num_pages page_range
paginator.count 所有页面的对象总数
paginator.num_pages 页面总数
paginator.page_range 页码列表
方法
page(num):下标以1开始的下标对象,如果提供的页码不存在,抛出InvalidPage异常
异常exception
InvalidPage:当向page()传入一个无效的页码时抛出
PageNotAnInteger:当向page()传入一个不是整数的值时抛出
EmptyPage:当向page()提供一个有效值,但是那个页面上没有任何对象时抛出
Page对象
Paginator 对象的page() 方法返回Page对象
page = pageinator(1) 返回指定页
属性
page . object_list 获得当前页所有的数据+=对象的列表
Page . number 当前页的序号,从1 开始
Page. paginator 当前页page相关的Paginator对象
方法
has_next():如果有下一页返回True
has_previous():如果有上一页返回True
has_other_pages():如果有上一页或下一页返回True
next_page_number():返回下一页的页码,如果下一页不存在,抛出InvalidPage异常
previous_page_number():返回上一页的页码,如果上一页不存在,抛出InvalidPage异常
Page.start_index()[source]返回当前页上的第一个对象,相对于分页列表的所有对象的序号,从1开始。 比如,将五个对象的列表分为每页两个对象,第二页的start_index()会返回3。
Page.end_index()[source]返回当前页上的最后一个对象,相对于分页列表的所有对象的序号,从1开始。 比如,将五个对象的列表分为每页两个对象,第二页的end_index() 会返回 4。
len():返回当前页面对象的个数
迭代页面对象:访问当前页面中的每个对象
案例
method 最多显示5 页
@staticmethod
def get_posts_by_page(num,per_page=1):
num = int(num)
pagintor = Paginator(Post.objects.order_by('-modified').all(),per_page)
if num <1:
num =1
if num > pagintor.num_pages:
num =pagintor.num_pages
page = pagintor.page(num) # 最多显示5页
# range =[ )
pervious= 2
last = 2
#如果当前页为 1 或2 时范围
if num <=pervious:
start = 1
end = pervious+last+1
# 如果当前页大于2 范围
#例如当前页 为 8 时 start=6 end = 10
if num > pervious:
start = num- pervious
end = num+last
#当最后一样超过总页数时
# 例如当前页 为 8 时 start=6 end = 10 但是 只有9页
if end > pagintor.num_pages:
min = end - pagintor.num_pages
end = pagintor.num_pages
start -= min
return (page,range(start,end+1))
页面渲染
def index_view(request,num = ''):
page,page_range=Post.get_posts_by_page(num)
return render(request,'index.html',context={'page':page,'page_range':page_range})
html中页面显示
{% if page.has_previous %}
<a class="extend prev" rel="next" href="/page/{{ page.previous_page_number }}">« Prev</a>
{% endif %}
{% for p in page_range %}
{% if p == page.number %}
<span class="page-number current">{{ p }}</span>
{% else %}
<a class="page-number" href="/page/{{ p }}">{{ p }}</a>
{% endif %}
{% endfor %}
{% if page.has_next %}
<a class="extend next" rel="next" href="/page/{{ page.next_page_number }}">Next »</a>
{% endif %}
Django分页解析的更多相关文章
- django分页及搜索后如何翻页
django自带了Pagnator 导入 from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage 分页 def ...
- Django 分页查询并返回jsons数据,中文乱码解决方法
Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ...
- django 分页(2) 使用类 页码显示
django 分页显示页码 views.py 显示11页码 ) < 起始位置 - 10总页数 else 总页数 > IF 当前页 小于 起始位置 结束页 IF 当前页 大于 IF 如果结束 ...
- Django 分页功能
Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...
- 原生的 django 分页
原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...
- Autoit 实现word拆分页解析 (python同理)
Autoit 实现word拆分页解析 (python同理) 背景 之前一直在做相关工作,由于没有找到解决最佳解决方案,老办法思路是 python先将word 转成pdf,按照页码 提取文字,从而实现w ...
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- Django分页(二)
Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...
- Django分页(一)
Django分页(一) 手动实现简单分页 HTML <!DOCTYPE html> <html lang="en"> <head> <me ...
随机推荐
- 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...
- MongoSQL 复制数据表报错
报错内容为: [thread1] SyntaxError: identifier starts immediately after numeric literal @(shell):1:2 解决方案: ...
- 基于python-opencv3的图像显示和保存操作
import cv2 as cv import numpy as np #导入库 print("------------------------ ...
- BZOJ3156 防御准备 斜率优化dp
Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sampl ...
- mysql sql知识总结
SQL知识总结: 检索不同的行: SELECT DISTINCT VEND_ID FROM PRODUCTS; DISTINCT 应用于所有的列 =================== 限制结果: S ...
- python之文件读写(1)
1. 从文件读取数据 关于对文件的操作,使用open(filename, mode),打开文件.与之对应的,close()用来关闭文件.对文件操作完毕切记要关闭. open函数参数: mode 参数有 ...
- P4449 于神之怒加强版 (莫比乌斯反演)
[题目链接] https://www.luogu.org/problemnew/show/P4449 给定n,m,k,计算 \(\sum_{i=1}^n \sum_{j=1}^m \mathrm{gc ...
- 洛谷 P1272 重建道路
题目链接 题解 树形dp \(f_{i, j}\)表示以\(i\)为根的子树切出联通块大小为\(j\)的最小答案 显然\(f[i][1]\)为与\(i\)连的边数 设\(v\)是\(u\)的儿子 那么 ...
- gym101964G Matrix Queries seerc2018k题 cdq分治
题目传送门 题目大意: 二维平面上有q次操作,每次操作可以是添加一个点,也可以是添加一个矩形,问每次操作后,有多少 点-矩形 这样的pair,pair的条件是点被矩形覆盖(边缘覆盖也算). 思路: ...
- pageHelper 分页插件使用
第一步:引入pageHelper的jar包. 链接:https://pan.baidu.com/s/1m3EyAmd_eoAsay0aM7uEkA 提取码:xmfi 第二步:需要在SqlMapConf ...