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 ...
随机推荐
- [转载]完全版线段树 by notonlysuccess大牛
原文出处:http://www.notonlysuccess.com/ (好像现在这个博客已经挂掉了,在网上找到的全部都是转载) 今天在清北学堂听课,听到了一些很令人吃惊的消息.至于这消息具体是啥,等 ...
- bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]
4871: [Shoi2017]摧毁"树状图" 题意:一颗无向树,选两条边不重复的路径,删去选择的点和路径剩下一些cc,求最多cc数. update 5.1 : 刚刚发现bzoj上 ...
- BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]
3566: [SHOI2014]概率充电器 题意:一棵树,每个点\(q[i]\)的概率直接充电,每条边\(p[i]\)的概率导电,电可以沿边传递使其他点间接充电.求进入充电状态的点期望个数 糖教题解传 ...
- c++中对于json的key不带双引号的问题修复
在引用了第三方数据时,数据源通过转义,将json的key上双引号给去掉了. 在PHP开发时,可以通过正则表达式替换方式来补充丢失的双引号,处理代码如下 function ex_json_decode( ...
- qt中的tcp编程
server .server.h #define DIALOG_H #include <QDialog> #include <QTcpServer> #include < ...
- PHP数组基本排序算法和查找算法
关于PHP中的基础算法,小结一下,也算是本博客的第一篇文章1.2种排序算法冒泡排序:例子:个人见解 5 6 2 3 7 9 第一趟 5 6 2 3 7 9 5 2 6 3 7 9 5 2 3 6 7 ...
- java 实现websocket的两种方式
简单说明 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与we ...
- [CJOJ2410]数列操作d
[CJOJ2410]数列操作d 标签: 线段树 题解 没时间写题了,我来嘴巴AC吧. 注意区间加的这个值不是 确定的,随着元素位置的变化而改变. 只需要能维护这个东西剩下的就很好做了. 那么\(x*( ...
- centos安装软件依赖问题
yum install gcc gcc-c++ ncurses-devel perl 基础包安装
- 【学习笔记】 使用XML配置和注解实现Spring的依赖注入DI (2-3-2)
Spring的四个核心组件 1.beans Bean是包装应用程序自定义对象Object的 Object中保存数据 2.core 3.context 一个Bean的关系集合 4.expression ...