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 ...
随机推荐
- CS190.1x-ML_lab5_pca_student
这次lab也是最后一次lab了,前面两次lab介绍了回归和分类,特别详细地介绍了线性回归和逻辑回归,这次的作业主要是非监督学习--降维,主要是PCA.数据集是神经科学的数据,来自于Ahrens Lab ...
- CS100.1x-lab3_text_analysis_and_entity_resolution_student
这次作业叫Text Analysis and Entity Resolution,比前几次作业难度要大很多.相关ipynb文件见我github. 实体解析在数据清洗和数据整合中是一个很重要,且有难度的 ...
- 牛客OI周赛4-提高组-C-战争[并查集]
题意 一个长度为 \(n\) 的序列,每个权值互不相同,给出形如 \(l,r,p\) 的信息表示 \([l,r]\) 区间中最小的数是 \(p\) ,问第几个信息开始出现矛盾. \(n\leq 5 \ ...
- Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
在Android群里,经常会有人问我,Android Log是怎么用的,今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门Android Log有一定的帮助. android. ...
- tcp ,http .udp
三次握手,四次挥手要知道,记住. 计算机协议常见面试题,学会了,记住.会运用.
- OpenCV调整彩色图像的饱和度和亮度
问题 如何调整彩色图像的饱和度和亮度 解决思路 详细步骤: 将RGB图像值归一化到[0, 1] 然后使用函数cvtColor进行色彩空间的转换 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换 ...
- EOS开发基础之六:使用cleos命令行客户端操作EOS——智能合约之eosio.msig和eosio.system
上一节我们搞了老半天,也没整明白Exchange这个合约到底干啥用的.就它官方提供的说法,是用于货币的创造和交易.我没整明白,所以去看了下代码,发现代码头文件里面有下面这段话: This contra ...
- PAT甲题题解-1021. Deepest Root (25)-dfs+并查集
dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...
- PAT甲题题解-1038. Recover the Smallest Number (30)-排序/贪心,自定义cmp函数的强大啊!!!
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789138.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
题意说的很清楚了,这种题的话,做的时候最好就是在纸上自己亲手模拟一下,清楚一下各个指针的情况, 这样写的时候就很清楚各个指针变量保存的是什么值. PS:一次AC哈哈,所以说自己动手在纸上画画还是很有好 ...