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 ...
随机推荐
- Python基础篇(一)
首先需要从Python的官网下载python的安装程序,下载地址为:www.python.org/downloads.最新的版本为3.4.1,下载和操作系统匹配的安装程序并安装即可. 安装好了后,在开 ...
- BZOJ 2754: [SCOI2012]喵星球上的点名 [AC自动机+map+暴力]
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1902 Solved: 837[Submit][St ...
- Sql2012数据库还原
Sql2012数据库还原(通过.bak数据库备份文件) 昨天系统挂了,那叫一个悲惨,重装了系统,但是sql2012的数据没有备份,同事帮忙发来备份文件(.bak),开始还原数据. 步骤:1 自己新建一 ...
- 设计模式之“Decorator”注疏#02
装饰模式在某种意义上来说也是挺原始的, 它首先需要一个你被装饰的基础类, 再来是需要一个基于这个基础类的原始包装器,可以看作是其它包装器的基础类 进而通过继承这个包装器,来构建出多个具有各自功能的特定 ...
- strcpy和strcat易忽略点
首先来看一段C程序: #include <stdio.h> #include <string.h> #include <stdlib.h> void GetMem( ...
- zookeeper 内部机制学习
zookeeper 内部机制学习 1. zk的设计目标 最终一致性:client不论连接到那个Server,展示给它的都是同一个视图. 可靠性:具有简单.健壮.良好的性能.如果消息m被到一台服务器接收 ...
- Android -传统蓝牙通信聊天
概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设备.蓝牙连接.通信等. 详细 代码下载:http://www.demodashi.com/demo/10676.html 原文地址: Andr ...
- 深入java虚拟机学习 -- 类的加载机制
当看到"类的加载机制",肯定很多人都在想我平时也不接触啊,工作中无非就是写代码,不会了可以百度,至于类,jvm是怎么加载的我一点也不需要关心.在我刚开始工作的时候也觉得这些底层的内 ...
- 剑指offer第七天
30.连续子数组的最大和 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决 ...
- Opencv 3.3.0 常用函数
如何调图像的亮度和对比度? //如何增加图片的对比度或亮度? void contrastOrBrightAdjust(InputArray &src,OutputArray &dst, ...