Django学习-14-分页功能实例
class Page:
def __init__(self,request_page,all_count,path_info,every_page_count=10,every_page_num=7):
self.request_page = request_page #用户请求页号
self.all_count = all_count #展示列表总长度
self.path_info = path_info #请求页面URL
self.every_page_count = every_page_count #默认每页显示的列表长度
self.every_page_num = every_page_num #默认一页有几个跳转页
self.page_list = []
def start(self):
#返回展示列表的首索引
return (self.request_page-1)* self.every_page_count
def end(self):
# 返回展示列表的尾索引
return self.request_page * self.every_page_count
def total_count(self):
#返回列表分页显示后的总页数,长度为100的列表,每夜显示10行,可以分的页数总共为10页
count, y = divmod(self.all_count,self.every_page_count)
if y:
count += 1
return count def index(self):
#返回当前请求页号在列表中的索引值范围
start_index = self.request_page - self.every_page_num // 2
end_index = self.request_page + self.every_page_num // 2 +1
count = self.total_count()
if count < self.every_page_num:
start_index = 1
end_index = count + 1
else:
if self.request_page <= (self.every_page_num // 2 + 1):
start_index = 1
end_index = self.every_page_num + 1
elif (self.request_page + self.every_page_num // 2) > count:
start_index = count - self.every_page_num + 1
end_index = count + 1
return start_index,end_index def page_str(self):
#返回生成的HTML标签
start_index, end_index = self.index()
count = self.total_count()
first_page = "<a href='%s?pid=1'>首页</a>"%self.path_info
self.page_list.append(first_page)
if self.request_page == 1:
prev_page = "<a href='javascript:void(0);'>上一页</a>"
else:
prev_page = "<a href='%s?pid=%s'>上一页</a>" % (self.path_info,self.request_page - 1)
self.page_list.append(prev_page)
for i in range(start_index, end_index):
if i == self.request_page:
temp = "<a class='active' href='%s?pid=%s'>%s</a>" % (self.path_info,i, i)
else:
temp = "<a href='%s?pid=%s'>%s</a>" % (self.path_info,i, i)
self.page_list.append(temp)
if self.request_page == count:
next_page = "<a href='javascript:void(0);'>下一页</a>"
else:
next_page = "<a href='%s?pid=%s'>下一页</a>" % (self.path_info,self.request_page + 1)
self.page_list.append(next_page)
last_page = "<a href='%s?pid=%s'>尾页</a>" % (self.path_info,count)
self.page_list.append(last_page)
jump_page = """
<input id='jump_page' type='text' /><a onclick='jumpPage(this,"%s?pid=");'>跳转</a>
<script>
function jumpPage(ths,url){
var val = parseInt(ths.previousSibling.value);
if( val>0 && val<%s+1){
location.href = url + ths.previousSibling.value;
}
else{
ths.previousSibling.value = '';
return false;
}
}
</script>
""" % (self.path_info,count)
self.page_list.append(jump_page)
page_str = "".join(self.page_list)
page_str = mark_safe(page_str)
return page_str
<ol>
{% for i in list %}
<li>{{ i }}</li>
{% endfor %}
</ol>
<div class="page">
{{ page_str }}
</div>
Django学习-14-分页功能实例的更多相关文章
- Django实现简单分页功能
使用django的第三方模块django-pure-pagination 安装模块: pip install django-pure-pagination 将'pure_pagination'添加到s ...
- Django学习---自定义分页
自定义分页 简单例子: urls.py: from django.contrib import admin from django.urls import path from django.conf. ...
- Django自定制分页功能
URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...
- tableau入门学习笔记--分页功能
最近在使用tableau来制作报表,对于tableau也是第一次接触并使用,每天学习些新的功能来记录在博客里,给他人方便,也给自己方便 tableau分页功能 很多时候由于工作表过长而出现拖拽条,如果 ...
- Django学习之天气调查实例(1):工程的开始
开始学习Django,一步一个脚印的进行.思考再三,还是以一个实例来开始学习.手里面正好有几万条单位天气传感器收集的数据,想做一个网页版的天气统计查询之类的小应用,也可以给学生体验,方便教学的进行(尽 ...
- Django学习-25-图片验证码实例
处理流程 用户请求网页 --> 后台发送登录界面的静态页面 --> 后台在内存中生成验证码 --> 验证码保存在用户对应的Session中 --> 返回验证码图片到前端 用户登 ...
- 利用rest-framework实现django应用的分页功能
自定义分页的类,继承 PageNumberPagination class StandardResultsSetPagination(PageNumberPagination): page_size ...
- Django 之 Paginator 分页功能
Django Paginator Django 分页官方文档 https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...
- 【原】django实现列表分页功能
在view.py里添加分页查询方法: from django.http import JsonResponse from django.views.decorators.http import req ...
随机推荐
- Springboot security cas源码陶冶-FilterSecurityInterceptor
前言:用户登录信息校验成功后,都会获得当前用户所拥有的全部权限,所以对访问的路径当前用户有无权限则需要拦截验证一发 Spring security过滤器的执行顺序 首先我们需要验证为啥FilterSe ...
- 对把JDK源码的一些注解,笔记
//对treeMap的红黑树理解注解. 2017.02.16 by 何锦彬 JDK,1.7.51 /** From CLR */ private void fixAfterInsertion(Entr ...
- BZOJ 3143: [Hnoi2013]游走 [概率DP 高斯消元]
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...
- django-rest-framework之基于类的视图
前言:上一篇博客中,主要讲的是请求和响应,项目里面views.py中的视图函数都是基于函数的,并且我们介绍了@api_view这个很有用的装饰器.同时,我们还介绍了APIView这个类,但是还没使用它 ...
- zabbix_server 挂了原因及解决方法(内存溢出)
14721:20170714:095330.028 [file:dbconfig.c,line:452] zbx_mem_malloc(): out of memory (requested 80 b ...
- 常见HTTP状态码出现原因
302:重定向.访问当前地址,后端重新指定一个URL,浏览器跳转到新的地址. 303:对于POST请求,它表示请求已被处理,客户端可以接着使用GET方法请求Location里的URL. 304:客户端 ...
- MySQL select语句直接导出数据
select * into outfile '文件存放路径' from 表名; (先记下来,还未测试)
- 使用VNC+SSH建立安全的远程桌面访问WINDOWS服务器
用了一段时间的MONO,现在MONO也支持了ENTITY FRAMEWORK 6.但是实际上在LINUX环境里用MYSQL还是会有很多坑.并且之前在网络游戏服务端SCUT上扩展一些功能时候也遇到了一些 ...
- java设计模式-----2、工厂方法模式
再看工厂方法模式之前先看看简单工厂模式 工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称为多态工厂模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的 ...
- 箱型图boxplot函数的使用
主要参数: medlwd:设置中位线宽度 whiskcol:设置虚线颜色 staplecol:设置顶端颜色 outcol:离群值颜色 相应的具体位置: outline=FALSE:去除离群值 outp ...