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 ...
随机推荐
- HGE引擎之hgeSprite
一.hgeSprite类 hgeSprite是一个精灵实体的HGE帮助类. 1.构造函数 创建和初始化一个hgeSprite对象. hgeSprite(HTEXTURE tex, float x, f ...
- Java 的局部变量和成员变量
在Java语言中没有全局变量 分析各种变量的作用域的最简单方法是以花括号为界, 1.在类体中定义的是成员变量,成员变量会被默认初始化 2.在方法中定义的是局部变量,局部变量不会被默认初始化
- java总结第二次(剩余内容)//类和对象1
7.成员变量和局部变量 成员变量:在类中定义,用来描述对象将要有什么 局部变量:在类的方法中定义,在方法中保存临时数据 区别:作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内 ...
- V4L2驱动程序框架架构【转】
本文转载自:http://blog.csdn.net/tommy_wxie/article/details/11728809 1 V4L2简介 video4linux2(V4L2)是Linux内核中关 ...
- 【python cookbook】【数据结构与算法】19.同时对数据做转换和换算
问题:我们需要调用一个换算函数(例如sum().min().max()),但是首先需对数据做转换或者筛选处理 解决方案:非常优雅的方法---在函数参数中使用生成器表达式 例如: # 计算平方和 num ...
- 161124、Java 异常处理的误区和经验总结
本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验, ...
- 安装SQL Server 2005
在安装SQL Server 2005时,经常会遇到一些错误,从而使系统无法正常安装.下面讲解在安装过程中经常出现的一些错误及其解决的方法.1.解决在安装SQL Server 2005时安装程序被挂起的 ...
- 利用python进行数据分析 (学习笔记)
第一章:准备工作 1.重要的Python库 (1)NumPy:Python科学计算的基础包.功能有:
- cocospod 安装和使用
一 ruby 安装 要安装coocspod 首先需要安装ruby,可以先安装xcode,在安装macport 下载地址,最后执行命令 port install ruby 二.安装CocoaPods 1 ...
- C#:使用Hashtable实现输出那些用户发表主题最多的信息
构思:先计算各自的数量,那些数量最多,输出详细信息 具体算法如下: public class Count { #region 计算各实体数量 public static Hashtable Entit ...