首先创建一个制作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. [Sdoi2017]数字表格 [莫比乌斯反演]

    [Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...

  2. Asp.Net Core MailKit 完美附件(中文名、长文件名)

    最近在使用MailKit组件发送邮件,看了一些博客其实还是蛮简单的,但是发送附件的时候却产生了不小的问题,附件的中文名字是乱码的,或者附件的名字过长就会无效,附件的名字在QQ邮箱中会变成类似 tcmi ...

  3. ASP.NET Core 2.0 : 四. _Layout与_ViewStart

    本章我们新建一个项目,并通过这个项目熟悉一下_Layout与_ViewStart. 新建一个项目 首先, 文件->新建一个解决方案 选择.Net Core 的APP下面的ASP.NET Core ...

  4. spring boot学习资源

    http://blog.csdn.net/u014695188/article/details/52226134 http://www.jianshu.com/p/887c22723e43 Sprin ...

  5. 2个域名重定向到https域名

    配置实例: [root@iZbp17q09o7e8pgg9dybd7Z conf.d]# cat company.confserver { listen 80; server_name www.yu* ...

  6. CentOS 7 使用iptables防火墙

    # 停止firewalld服务 systemctl stop firewalld systemctl mask firewalld # 安装iptables-services yum install ...

  7. R语言-来自Prosper的贷款数据探索

    案例分析:Prosper是美国的一家P2P在线借贷平台,网站撮合了一些有闲钱的人和一些急用钱的人.用户若有贷款需求,可在网站上列出期望数额和可承受的最大利率.潜在贷方则为数额和利率展开竞价. 本项目拟 ...

  8. Java经典编程题50道之二

    判断101-200之间有多少个素数,并输出所有素数. public class Example02 {    public static void main(String[] args) {      ...

  9. 测试同学难道要写一辈子的hello world?

    最近我们在测试团队内推行自动化用例责任制,大致的意思是:我们安排培训资源,提供技术支持和一对一辅导,要求每一个自主选择了自动化和接口测试发展通道的同学必须让自己负责的项目自动化用例覆盖率有所提升. 后 ...

  10. java程序员理解js中的闭包

    1.闭包概念: 就是函数内部通过某种方式访问一个函数内部的局部变量 再次理解: 闭包产生原因: 1.内部函数引用了外部函数的变量 作用:延长局部变量的生命周期 让函数外部可以调用到函数内部的数据 利用 ...