Django中的分页
直接看代码吧,还算比较简单:
- 先确认数据量有多少
- 根据页面显示数据的多少来分割数据,得到页面的开始数据和结束数据
- 根据开始和截止数据去切片数据,并且得到总共的页码数
- 根据一页显示多少页码和当前页码数,得到开始和截止的页码
- 配置首页码、上一页、页码内容、下一页、末页
- 内容为字符串拼凑的HTML标签,并拼接到一起
- 导入mark_safe模块,将字符串转化为页码对象
HTML页面内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>page_test</title>
<style>
.selected{
background-color: lightblue;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>id</th>
<th>名称</th>
</tr>
</thead>
<tbody>
{% for item in data %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div>
{{ str_page }}
</div>
</body>
</html>
views.py内容:
def page(request):
# for i in range(200):
# name = 'cc'+str(i)
# models.Girl.objects.create(name=name)
current_page = request.GET.get('p', 1)
current_page = int(current_page)
start = (current_page - 1) * 10
end = current_page * 10
data = models.Girl.objects.all()[start:end]
total_item = models.Girl.objects.all().count()
a, b = divmod(total_item, 10)
if b == 0:
pass
else:
a += 1
str_page = CustomPage('?p=',current_page,a)
return render(request, 'page.html', {'data': data, 'str_page': str_page})
def CustomPage(baseurl,current_page,total_page):
#每页显示11页码
#perPage = 11
begin = 0
end = 0
if total_page <= 11:
begin = 0
end = total_page
else:
if current_page > 5:
begin = current_page - 5
end = current_page + 5
if end > total_page:
end = total_page
else:
begin = 0
end = 11
page_list = []
#编辑首页项
if current_page <= 1:
first = "<a href='#'>首页</a>"
else:
first = "<a href='%s%d'>首页</a>"%(baseurl,1)
page_list.append(first)
#编辑上一页选项
if current_page <= 1:
prev = "<a href='#'>上一页</a>"
else:
prev = "<a href='%s%d'>上一页</a>"%(baseurl,current_page-1)
page_list.append(prev)
#编辑中间页面项
for i in range(begin+1,end+1):
if i == current_page:
temp = "<a href='%s%d' class='selected'>%d</a>"%(baseurl,i,i)
else:
temp = "<a href='%s%d'>%d</a>"%(baseurl,i,i)
page_list.append(temp)
#编辑下一页选项
if current_page >= total_page:
nex = "<a href='#'>下一页</a>"
else:
nex = "<a href='%s%d'>下一页</a>"%(baseurl,current_page+1)
page_list.append(nex)
#编辑末页选项
if current_page >= total_page:
last = "<a href='#'>末页</a>"
else:
last = "<a href='%s%d'>末页</a>"%(baseurl,total_page)
page_list.append(last)
#拼接字符串
result = ' '.join(page_list)
#转换为HTML
from django.utils.safestring import mark_safe
return mark_safe(result)
Django中的分页的更多相关文章
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- Django 中设置分页页码,只显示当前页以及左右两页
设置后的效果如下: Django 给我们提供了分页的功能:`Paginator`和`Page`类都是用来做分页的.他们在Django中的路径为:`from django.core.paginator ...
- django中的分页管理
有时,展示的对象太多,需要对他们进行分页展示,不能一页把所有的结果都展示出来吧,那样的话,哈哈,挺逗 使用Django分页器功能 从Django中导入Paginator模块(没有的话,自行下载,我是w ...
- Django中的分页操作、form校验工具
批量插入数据 后端: def fenye(request): book_list=[] for i in range(100): book_list.append(models.Book(title= ...
- django中的分页设置
1.在控制台中的展示 from django.core.paginator import Paginator iter = 'abcdefghijklmn' inator = Paginator(it ...
- django中写分页
1.引用函数import from django.core.paginator import Paginator 2.分页 page_obj = Paginator(Article.objects.a ...
- django中的分页标签
class Pagination: def __init__(self, page, page_total, per_one_page=15, max_page=11): ''' :param pag ...
- Django中扩展Paginator实现分页
Reference:https://my.oschina.net/kelvinfang/blog/134342 Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Dj ...
- django中如何实现分页功能
1.在html页面中导入js文件和css文件 <link rel="stylesheet" href="../../../static/css/jquery.pag ...
随机推荐
- 统一使用GPT分区表,安装MAC 10.10 和 Win8.1 pro双系统
步骤一: 为Mac OS 分区,为其它分区留白1,使用OSX Mavericks制作的Mac安装U盘按住Option键启动:2,选择安装Mavericks盘符:3,进入OSX安装启动界面,选择磁盘工具 ...
- css经典布局学习
. 布局 布局是css的重头戏,每个系统的布局都有其各自的特点.无好无坏,肯定是各有优缺点,不妨拿出几个比较典型的例子来一起分析一下.例如: 经典三列布局 Bootstrap栅格布局 百度首页布局 微 ...
- php版redis插件,SSDB数据库,增强型的Redis管理api实例
php版redis插件,SSDB数据库,增强型的Redis管理api实例 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储.另外,ro ...
- 专为物联网开发的开源操作系统Contiki(转)
专为物联网开发的开源操作系统Contiki(转) (2012-04-19 15:31:09) 原文网址:http://blog.sina.com.cn/s/blog_6de000c201010z7n ...
- Shipyard安装、使用
Shipyard使用Citadel集群管理工具包,简化对横跨多个主机的Docker容器集群进行管理.通过Web用户界面,你可以大致浏览相关信息,比如你的容器在使用多少处理器和内存资源.在运行哪些容器, ...
- HDU 4405:Aeroplane chess(概率DP入门)
http://acm.split.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Problem Description Hzz loves ...
- PHP serialize & JSON 解析
对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Program ...
- java面试每日一题9
题目:判断一个数是否是2的方次幂 public class Power { public static void main(String [] args) throws NumberFormatExc ...
- YTU 3006: 迷宫问题(栈与队列)
3006: 迷宫问题(栈与队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 3 解决: 1 题目描述 编写一个求解迷宫问题的程序,要求输出迷宫的所有路径,并求最短路径长度及最短路径 ...
- windows tomcat配置大全
Tomcat下JSP.Servlet和JavaBean环境的配置 第一步:下载j2sdk和tomcat:到sun官方站点()下载j2sdk,注意下载版本为Windows Offline Install ...