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 ...
随机推荐
- 【ORACLE】oracle数据库用户密码复杂度配置
-- 设置密码复杂度 SQL> @ /u01/app/oracle/product/11.2.0/db_1/rdbms/admin/utlpwdmg.sql -- 测试 SQL> alte ...
- json-server+mockjs 模拟REST接口
前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...
- .NET Core容器化开发系列(一)——Docker里面跑个.NET Core
前言 博客园中已经有很多如何在Docker里面运行ASP.NET Core的介绍了.本篇主要介绍一些细节,帮助初学的朋友更加深入地理解如何在Docker中运行ASP.NET Core. 安装Docke ...
- IOS免越狱虚拟定位修改工具共享 Jocation
Jocation IOS虚拟定位修改器 具体使用方法可以按照 location cleaned软件相同的操作. 主要是因为本人有一部 IphoneX 和Iphone Xs Max 网上的locatio ...
- Express模版引擎hbs备忘
最近几天折腾了下express,想找个合适的模版引擎,下面是一些折腾过程的备忘 选择标准 选择一门模版语言时,可能会考虑的几点 语法友好(micro tmpl那种语法真是够了) 支持模版嵌套(子模版的 ...
- Json和Map互转,四个包(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)
目前使用的(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)这四种json-map互转,其他的以后在补充.............. ...
- 使用kubeadm安装kubernetes高可用集群
kubeadm安装kubernetes高可用集群搭建 第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...
- 初始化Weex项目遇到的问题记录
Weex 提供了一个命令行工具 weex-toolkit 来帮助开发者使用 Weex.它可以用来快速创建一个空项目.初始化 iOS 和 Android 开发环境.调试.安装插件等操作. 目前 weex ...
- 运用visual studio进行简单的单元测试
昨天下午安装了visual studio,本打算晚上进行单元测试的,但当我再打开的时候就让我选择修复或卸载,修复完之后还是不能用,顿时觉得心好累啊,后来室友说要更新update5,点了更新之后就是无情 ...
- Bean的加载
ClassPathXmlApplicationContext存储内容 为了更理解ApplicationContext,拿一个实例ClassPathXmlApplicationContext举例,看一下 ...