Django分页(二)
Django分页(二)
要求
# 、设定每页显示数据条数
#
# 、用户输入页码(第一页、第二页...)
#
# 、设定显示多少页号
#
# 、获取当前数据总条数
#
# 、根据设定显示多少页号和数据总条数计算出,总页数
#
# 、根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置
#
# 、在数据表中根据起始位置取值,页面上输出数据
#
# 、输出分页html,如:[上一页][][][][][][下一页]
具体实现效果
css样式可以自行修改

示例
页面具体处理
# 参数:
#数据总个数
#当前页
#每页显示多少条数据
#最多每页多个页号 class PageInfo(object):
def __init__(self,totalCount,current,totalItem=12,peritems=10):
#数据总个数
self._count=totalCount
#当前页
try: v=int(current)
if v<=0:
v=1
self.__current=v
except Exception as e:
self.__current = 1
#每页显示的行数
self.__totalItem=totalItem
#最多显示页面
self.__peritems = peritems #设置一页数据的开始和结束
#数据开始的页数
def start(self):
return (self.__current-1)*self.__totalItem
#数据结束的页数
def end(self):
return self.__current*self.__totalItem #求出总页数
@property
def num_pages(self): a,b=divmod(self._count,self.__totalItem)
# print(a,b)
if b==0:
return a
return a+1 #生成所有的页号
def page_num_range(self):
# 当前页面
# self.current_page
# 总页数
# self.num_pages
# 最多显示的页码个数
# self.max_pager_num
if self.num_pages < self.__peritems:
return range(1, self.num_pages + 1)
part = int( self.__peritems/ 2)
if self.__current - part < 1:
return range(1, self.__peritems + 1)
if self.__current + part > self.num_pages:
return range(self.num_pages + 1 - self.__peritems, self.num_pages + 1)
return range(self.__current - part, self.__current + part + 1)
#所有的a标签
def page_str(self): #用来存放所有页号a标签
page_list=[] #首页
head_page="<a href='/index3?p=1'>首页</a>"
page_list.append(head_page) #上一页
print(self.__current)
if self.__current ==1: prev="<a href='#'><<</a>"
else:
prev="<a href='/index3?p=%s'><<</a>"%(self.__current-1) page_list.append(prev)
for i in self.page_num_range():
if i==self.__current:
temp="<a style='font-size:30px;' href='/index3?p=%s'>%s</a>"%(i,i)
else:
temp="<a href='/index3?p=%s'>%s</a>"%(i,i)
page_list.append(temp) #下一页
if self.__current==self.num_pages:
next = "<a href='#'>>></a>"
else:
next = "<a href='/index3?p=%s'>>></a>" % (self.__current + 1) page_list.append(next) # 尾页
b_page="<a href='/index3?p=%s'>尾页</a>"%( self.num_pages)
page_list.append(b_page)
return ''.join(page_list)
视图函数
from django.shortcuts import render,HttpResponse,redirect
from blog.models import *
from blog import pager
# Create your views here.
USER_LIST=[]
for i in range(666):
temp={'name':'root'+str(i),'age':i}
USER_LIST.append(temp) def get_index3(request):
current_page=request.GET.get('p') #初始化页面处理的对象,有两个参数在初始化函数里,设置了默认数值
page_obj=pager.PageInfo(666,current_page) #对数据进行切片
data_list=USER_LIST[page_obj.start():page_obj.end()] return render(request,"index3.html",{'data_list':data_list,"page_obj":page_obj})
HTML
注意:safe在这里的作用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
a{
border-style: solid ;
} </style>
</head>
<body>
<div class="header">
<div>
{% for user in data_list %}
<li>{{ user.name }} {{ user.age }} </li>
{% endfor %}
<br>
{{ page_obj.page_str | safe }}
</div> </div>
</body>
</html>
Django分页(二)的更多相关文章
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- Django分页类的封装
Django分页类的封装 Django ORM 封装 之前有提到(Django分页的实现)会多次用到分页,将分页功能封装起来能极大提高效率. 其实不是很难,就是将之前实现的代码全都放到类中,将需要用 ...
- Django分页的实现
Django分页的实现 Django ORM 分页介绍 分页是网页浏览中常见到的一种形式,在数据量较大时,一个页面显示不全,采取分割数据由用户选择进行显示的方式. 基本实现 技术点 通过切片得到数据 ...
- Django 分页查询并返回jsons数据,中文乱码解决方法
Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ...
- 【python】-- Django 分页 、cookie、Session、CSRF
Django 分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...
- Django框架(十四)—— Django分页组件
目录 Django分页组件 一.分页器 二.分页器的使用 三.案例 1.模板层 2.视图层 Django分页组件 一.分页器 数据量大的话,可以分页获取,查看 例如:图书管理中,如果有成千上万本书,要 ...
- day 65 Django基础之django分页
Django基础之django分页 一.Django的内置分页器(paginator) view from django.shortcuts import render,HttpRespons ...
- day 61 Django基础之django分页
Django基础之django分页 一.Django的内置分页器(paginator) view from django.shortcuts import render,HttpRespons ...
- django 分页(2) 使用类 页码显示
django 分页显示页码 views.py 显示11页码 ) < 起始位置 - 10总页数 else 总页数 > IF 当前页 小于 起始位置 结束页 IF 当前页 大于 IF 如果结束 ...
随机推荐
- Centos7 linux 卸载自带安装的jdk 并yum自动安装jdk1.8
一:卸载系统自带安装的JDK 注:本文参考了< 使用CentOS7卸载自带jdk安装自己的JDK1.8> 通过xshell工具成功连接安装好的虚拟机之后可通过 rpm -qa | g ...
- xilinx_all_version.lic
INCREMENT ISE_Vivado_Seth xilinxd -dec- uncounted \ C25FB036D304 VENDOR_STRING=License_Type:Bought H ...
- STL的注意事项
template是一个泛化的:使用template时开始仅仅是声明,具体的例如:k<int> a;叫做实例化显式实例化:类似k<int>a:明确指出哪种类型:隐式实例化:类似k ...
- 【深度学习】吴恩达网易公开课练习(class1 week2)
知识点汇总 作业内容:用logistic回归对猫进行分类 numpy知识点: 查看矩阵维度: x.shape 初始化0矩阵: np.zeros((dim1, dim2)) 去掉矩阵中大小是1的维度: ...
- 【kafka】设置指定topic和group_id消耗的offset
该博文方法有问题,正确方案在http://www.cnblogs.com/dplearning/p/7992994.html 背景: 搭建了一个kafka集群,建立了topic test,用group ...
- ubuntu MySQL配置文件
查看配置文件: locate my.cnf 查看配置文件路径: /记得要在配置环境变量后执行下列命令 which mysqld /usr/local/mysql/bin/mysqld --verbos ...
- mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...
- 类和JSP关系
404的原因.除了路径问题,还有文件放置位置.比如如果文件在web-inf下面.浏览器是访问不到的
- Tensorflow生成唐诗和歌词(下)
整个工程使用的是Windows版pyCharm和tensorflow. 源码地址:https://github.com/Irvinglove/tensorflow_poems/tree/master ...
- EF Core Migration
//添加migrations dotnet ef migrations add [名称] //根据model更新sql表结构 dotnet ef database update //删除最新的migr ...