首先创建一个制作page的工具类
                    utils
                        --page_make.py
                                class Page():
                                    ...
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
from django.utils.safestring import mark_safe    将字符串标记为安全HTML代码
默认情况所有前端后台代码都是不安全的,想使用代码就标记安全,避免XSS
 
page_str = mark_safe(page_str)
return render(request,'page.html',{ 'list':list,'page_str':page_str })
HTML页面代码
<ol>
{% for i in list %}
<li>{{ i }}</li>
{% endfor %}
</ol>
<div class="page">
{{ page_str }}
</div>

  

Django学习-14-分页功能实例的更多相关文章

  1. Django实现简单分页功能

    使用django的第三方模块django-pure-pagination 安装模块: pip install django-pure-pagination 将'pure_pagination'添加到s ...

  2. Django学习---自定义分页

    自定义分页 简单例子: urls.py: from django.contrib import admin from django.urls import path from django.conf. ...

  3. Django自定制分页功能

    URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...

  4. tableau入门学习笔记--分页功能

    最近在使用tableau来制作报表,对于tableau也是第一次接触并使用,每天学习些新的功能来记录在博客里,给他人方便,也给自己方便 tableau分页功能 很多时候由于工作表过长而出现拖拽条,如果 ...

  5. Django学习之天气调查实例(1):工程的开始

    开始学习Django,一步一个脚印的进行.思考再三,还是以一个实例来开始学习.手里面正好有几万条单位天气传感器收集的数据,想做一个网页版的天气统计查询之类的小应用,也可以给学生体验,方便教学的进行(尽 ...

  6. Django学习-25-图片验证码实例

    处理流程 用户请求网页 --> 后台发送登录界面的静态页面 --> 后台在内存中生成验证码 --> 验证码保存在用户对应的Session中 --> 返回验证码图片到前端 用户登 ...

  7. 利用rest-framework实现django应用的分页功能

    自定义分页的类,继承 PageNumberPagination class StandardResultsSetPagination(PageNumberPagination): page_size ...

  8. Django 之 Paginator 分页功能

    Django Paginator Django 分页官方文档  https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...

  9. 【原】django实现列表分页功能

    在view.py里添加分页查询方法: from django.http import JsonResponse from django.views.decorators.http import req ...

随机推荐

  1. ABP 多租户 对应多数据库 租户启动报错

    什么是多租户? “软件多租户是指一个软件体系结构,其中一个软件实例在一个服务器上运行,并为多个租户提供服务*租户是一组共享具有软件实例特定权限的公共访问权限的用户. 架构中,软件应用程序旨在为每个租户 ...

  2. 理解JavaScript中的作用域

     什么是变量,什么是作用域? 变量:简单来说就是在特定时间内保存特定值的一个名字而已,由于不存在定义某个变量必须要保存某种数据类型值的规则,所以变量的值及其数据类型可以在脚本生命周期内任意改变,变量可 ...

  3. 【JavaWeb】JDBC连接MySQL数据库

    正文之前 在之前写的JavaWeb项目中使用了JDBC,在此来回顾一下,并做个demo看看,先来看看JDBC的概念 Java数据库连接,(Java Database Connectivity,简称JD ...

  4. scope_lock与lock_guard区别

    lock_guard:更加灵活的锁管理类模板,构造时是否加锁是可选的,在对象析构时如果持有锁会自动释放锁,所有权可以转移.对象生命期内允许手动加锁和释放锁. scope_lock:严格基于作用域(sc ...

  5. Redis 学习(二) —— 数据类型及操作

    Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...

  6. PHP 变量的实现原理

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...

  7. android应用中去android市场去评分的功能实现(吐槽一波个人应用上线...)

    一般的app可能会有这中功能,在应用中去android商店评分来提高排名,前段时间也把我的博客园上传到商店,这里不得不吐槽一些android商店的开放平台. 酷派,vivo,oppo,联想不支持个人开 ...

  8. [POJ 3581]Sequence

    [POJ 3581]Sequence 标签: 后缀数组 题目链接 题意 给你一串序列\(A_i\),保证对于$ \forall i \in [2,n],都有A_1 >A_i$. 现在需要把这个序 ...

  9. jquery序列化serialize()方法空格变为+问题解决参考方法

    $("#sendNoticeData-form").serialize();会在value中存在空格的地方转化为+符合.比如:name:tiwax aaa序列化后为tiwax+aa ...

  10. canvas-缩放

    Canvas-图片缩放 由上一篇canvas-旋转的例子可以了解到canvas的一些特性,不熟悉的同学可以先去看看canvas-旋转. 我们在将图片引入canvas时,图片会一原始像素渲染.这样往往不 ...