python---django中自带分页类使用
请先看在学习tornado时,写的自定义分页类:思路一致;
1.基础使用:
后台数据获取:
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage#错误判断
List_info = []
for i in range():
List_info.append("news%d"%i) def get_page(req):
current_page = req.GET.get('p')
paginator = Paginator(List_info,10) #传入总数据和每页显示的数据
#含有属性:
#per_page:每页显示条数上面的10
#count数据总数
#num_pages:总页数
#page_range:总页数索引范围
#page:page对象
try:
posts = paginator.page(current_page)
#page对象含有方法:
#has_next:判断是否有下一页
#has_previous:判断是否有上一页
#next_page_number:下一页页码
#previous_page_number:上一页页码
#number:当前页 注意:这个是属性,其他是方法,需要加上()
#paginator:paginator对象
except PageNotAnInteger:
posts = paginator.page()
except EmptyPage:
posts = paginator.page(paginator.num_pages) #num_pages数总页数,最后一页 return render(req,'get_page.html',{'posts':posts})
前端代码:
<div class="content">
{% for item in posts %}
<p>{{ item }}</p>
{% endfor %}
</div>
<div>
<span>
{% if posts.has_previous %} #模板中调用函数不要()
<a href="/page.html?p={{ posts.previous_page_number }}">prev</a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}
</span>
{% if posts.has_next %}
<a href="/page.html?p={{ posts.next_page_number }}">next</a>
{% endif %}
</span>
</div>
2.扩展内置分页:
类修改:
from django.core.paginator import Paginator class CustomPagimator(Paginator):
def __init__(self,current_page,max_page_num,*args,**kwargs):
self.current_page = int(current_page) #当前页 #自定义变量
self.max_page_num = max_page_num #可以显示多少页 #自定义变量
super(CustomPagimator,self).__init__(*args,**kwargs) def page_num_range(self):
# self.num_pages 总页数
part_num = int(self.max_page_num/)
if self.num_pages <= self.max_page_num: #先判断总页数和运行显示的页数大小
return range(, self.num_pages + )
if self.current_page <= part_num: #再取半分析
return range(,self.max_page_num+)
elif self.current_page+part_num>= self.num_pages:
return range(self.num_pages-self.max_page_num,self.num_pages+)
else:
return range(self.current_page - part_num, self.current_page + part_num + )
类调用:
List_info = []
for i in range():
List_info.append("news%d"%i)
from 模块.自定义分页类文件 import 自定义分页类CustomPagimator
def get_page(req):
current_page = req.GET.get('p')
paginator = CustomPagimator(current_page=current_page, max_page_num=,object_list=List_info,per_page=) #传入总数据和每页显示的数据
try:
posts = paginator.page(current_page)
except PageNotAnInteger:
posts = paginator.page()
except EmptyPage:
posts = paginator.page(paginator.num_pages) #num_pages数总页数,最后一页 page_html = paginator.page_num_range() return render(req,'get_page.html',{'posts':posts,"page_html":page_html})
前端使用:
<div>
<span>
{% if posts.has_previous %}
<a href="/page.html?p={{ posts.previous_page_number }}">prev</a>
{% endif %}
<span class="page">
{% for i in page_html %}
<a href="/page.html?p={{ i }}">{{ i }}</a>
{% endfor %}
</span>
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}
</span>
{% if posts.has_next %}
<a href="/page.html?p={{ posts.next_page_number }}">next</a>
{% endif %}
</span>
</div>
python---django中自带分页类使用的更多相关文章
- Yii2中自带分页类实现分页
1.首先写控制器层 先引用pagination类 use yii\data\Pagination; 写自己的方法: function actionFenye(){ $data = Fie ...
- django上课笔记2-视图CBV-ORM补充-Django的自带分页-Django的自定义分页
一.视图CBV 1.urls url(r'^login.html$', views.Login.as_view()), 2.views from django.views import View cl ...
- Python Django中QQ邮箱授权码问题
Python Django中QQ邮箱授权码问题 系统及软件版本如下: Ubuntu Kylin 16.04 Python 3.5.1 Django 1.9.7 PyCharm Community Ed ...
- RSA算法在Python Django中的简单应用
说明 RSA算法是当今使用最广泛,安全度最高的加密算法. • RSA算法的安全性理论基础 [引]根据百科介绍,对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难, ...
- python django中使用sqlite3数据库 存储二进制数据ByteArray
在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...
- django中如何实现分页功能
1.在html页面中导入js文件和css文件 <link rel="stylesheet" href="../../../static/css/jquery.pag ...
- php中的实用分页类
<table width="100%" border="1" cellpadding="0" cellspacing="0& ...
- Python Django 中的STATIC_URL 设置和使用解析
使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出来了.特记录下来. 关键的概念:Django中,静态资源的存 ...
- python Django中的cookie和session
目录 Cookie 1.1获取Cookie 1.2设置Cookie Session 1.数据库Session 2.缓存Session 3.文件Session 4.缓存+数据库Session Cooki ...
随机推荐
- pycharm如何在虚拟环境中引入别人的项目
如果你想引入别人的项目,但是呢引入的项目可能与自己原先装的模块的版本产生冲突,而且如果引入一个项目就在本地进行运行使用,每个项目用的依赖包都不大相同,就会导致解释器安装包过多,就会导致加载过慢,甚至会 ...
- 把Excel的数据导入到数据库
将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个packag ...
- 你应该知道Go语言的几个优势
要说起GO语言的优势,我们就得从GO语言的历史讲起了-- 本文由腾讯技术工程官方号发表在腾讯云+社区 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Grie ...
- ASP.NET Core采用Web Deploy方式发布到 Windows Server 2012 IIS上
小白一枚,租个服务器,发布下网站,满足下好奇心,讲的粗糙,请大家谅解哈~ 1.配置服务器环境.这部分网上教程比较多. (1)开启IIS,参考其他博客的,担心的话,将Web服务器(IIS)全选哈~ (2 ...
- [git hooks] pre-commit 配置
在开发过程中,通常使用 eslint 来规范团队的代码风格.但是 eslint 只能在开发服务器启动的时候才去检验代码.如果一个人在不启动开发服务器的情况下,修改了代码直接提交到git,那么别人pul ...
- RPG游戏开发基础教程
RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...
- 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois Puget
目录 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois Puget 正文 对我的启发 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois ...
- Shell 基础 -- 输入、输出重定向
一.文件描述符 文件描述符是一个非负的整数,Linux 中每个运行中的程序(进程),都有一些与之关联的文件描述符,你可以使用文件描述符来访问打开的文件或设备.在标准 I/O 库中,与文件描述符对应的是 ...
- 微软职位内部推荐-Software Engineer II-Search
微软近期Open的职位: Do you want to work on a fast-cycle, high visibility, hardcore search team with ambitio ...
- “Linux内核分析”实验二报告
张文俊 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.第二周学习内 ...