直接看代码吧,还算比较简单:

  1. 先确认数据量有多少
  2. 根据页面显示数据的多少来分割数据,得到页面的开始数据和结束数据
  3. 根据开始和截止数据去切片数据,并且得到总共的页码数
  4. 根据一页显示多少页码和当前页码数,得到开始和截止的页码
  5. 配置首页码、上一页、页码内容、下一页、末页
  6. 内容为字符串拼凑的HTML标签,并拼接到一起
  7. 导入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中的分页的更多相关文章

  1. Django中的分页,cookies与session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  2. Django 中设置分页页码,只显示当前页以及左右两页

    设置后的效果如下: Django 给我们提供了分页的功能:`Paginator`和`Page`类都是用来做分页的.他们在Django中的路径为:`from django.core.paginator ...

  3. django中的分页管理

    有时,展示的对象太多,需要对他们进行分页展示,不能一页把所有的结果都展示出来吧,那样的话,哈哈,挺逗 使用Django分页器功能 从Django中导入Paginator模块(没有的话,自行下载,我是w ...

  4. Django中的分页操作、form校验工具

    批量插入数据 后端: def fenye(request): book_list=[] for i in range(100): book_list.append(models.Book(title= ...

  5. django中的分页设置

    1.在控制台中的展示 from django.core.paginator import Paginator iter = 'abcdefghijklmn' inator = Paginator(it ...

  6. django中写分页

    1.引用函数import from django.core.paginator import Paginator 2.分页 page_obj = Paginator(Article.objects.a ...

  7. django中的分页标签

    class Pagination: def __init__(self, page, page_total, per_one_page=15, max_page=11): ''' :param pag ...

  8. Django中扩展Paginator实现分页

    Reference:https://my.oschina.net/kelvinfang/blog/134342 Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Dj ...

  9. django中如何实现分页功能

    1.在html页面中导入js文件和css文件 <link rel="stylesheet" href="../../../static/css/jquery.pag ...

随机推荐

  1. asp.net中获得客户端的IP地址

    asp.net中获得客户端的IP地址 因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅.  通常我们都通过下面的代码获得IP ...

  2. webform 文件上传(头像上传) 隐藏FileUpload

    <div> <%-- 核心思想:把FileUpload设为relative,top:-200px;opacity: --%> <div id="localIma ...

  3. OpenGL拾取注意事项

    GLFrame框架本身不支持拾取,需要自己实现.以下代码是实现拾取功能的注意事项: void Test::doSelection(int xPos, int yPos) { GLfloat aspec ...

  4. OpenCV cv::Mat类

    using namespace cv; 1.Mat的声明: Mat m=Mat(rows, cols, type); Mat m=Mat(Size(width,height), type); type ...

  5. 什么是BI【转】

    产品与服务 - 商务智能 目前,商业智能产品及解决方案大致可分为数据仓库产品.数据抽取产品.OLAP产品.展示产品.和集成以上几种产品的针对某个应用的整体解决方案     商业智能是什么? 简而言之, ...

  6. TI CC254x BLE教程 3

    通用属性配置(Generic Attribute Profiles) 1. 数据在services里面以特征字(characteristics)的形式展示出来 如你所见, 特征字包含属性(Proper ...

  7. STM32模拟I2C

    之前为了测试, 拿最小板做了一个I2C的主发跟主读, 一开始当然是尝试用硬件I2C, 结果弄了很久, 时间紧迫, 只好用了模拟, 结果发现, 哎, 真特么挺好用的, 现在1片儿顶过去5片儿. 硬件I2 ...

  8. oracle 数据泵 每天自动备份

    @echo off echo 删除10天前的备分文件和日志 forfiles /p "e:\app\back" /m *.dmp /d -5 /c "cmd /c del ...

  9. flex 右键连接

    var menuItem:ContextMenuItem = new ContextMenuItem("技术支持:中科天宇软件有限公司", true, true); menuIte ...

  10. 数32位 unsigned int中1的个数

    参考文章:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html 最简单的方法: int BitCount0(unsigned ...