Django分页:使用django.core.paginator模块

#导入模块

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

#获取使用paginator函数分页集中sql_result,每25条为一页

#sql_result 是元组数据

paginator = Paginator(sql_result, 25)

#获取分页的数量

page_sum = paginator.num_pages

after_range_num = 3

before_range_num = 9

try:

page = int(request.GET.get(‘page‘, ‘1‘))

except ValueError:

page = 1

try:

#建立一个触点,包含sql_result的结果,传入html,使用for语句遍历出最终结果(contacts.object_list 代替原始的sql_result)

contacts = paginator.page(page)

except PageNotAnInteger:

contacts = paginator.page(1)

except EmptyPage:

contacts = paginator.page(paginator.num_pages)

#页面显示数据

if page >= after_range_num:

page_range = paginator.page_range[page-after_range_num:page+before_range_num]

else:

page_range = paginator.page_range[0:int(page)+before_range_num]

return render_to_response(‘index.html‘, {‘contacts‘:contacts, ‘page_sum‘:page_sum})

#下面是html内容

#展现数据的方式

<table border=‘1‘ cellpadding=‘3‘ cellspacing=‘0‘ align=‘center‘>

{% for row in contacts.object_list %}  #使用contacts.object_list 替代sql_result

<tr>

{% for v in row %}                                                    <td>{{v}}</td>

{% endfor %}

</tr>

{% endfor%}

</table><br>

#分页栏

<span>

{% if contacts.has_previous %}

<a href="?page=1">首页</a> <a href="?page={{contacts.previous_page_number}}">上一页</a>

{% endif %}

{% for p in page_range %}

{% ifequal p contacts.number %}

<span>{{p}}</span>

{% else %}

<a href="?page={{p}}">{{p}}</a>

{% endifequal %}

{% endfor %}

{% if contacts.has_next %}                                             #尾页转到最后页,也就是统计页数的个数

<a href="?page={{contacts.next_page_number}}">下一页</a> <a href="?page={{page_sum}}">尾页</a>

{% endif%}

</span><br><br>

时间: 2024-12-24 16:09:28

Django分页:使用django.core.paginator模块的相关文章

django分页技术django-pagination和Paginator

转载前还请注明出处:http://blog.csdn.net/gugugujiawei 一.概述 几乎所有的web应用,都需要分页功能,但分页技术总体来说分两种,一种是全部加载,存于浏览器的缓存中,一种是分页访问,部分加载.前一种方法优点是实现简单,在一些对项目要求不多的特定应用上用得较多,可以利用的插件譬如datatables,而后一种方法优点是不会占用服务器太多的缓存,对于数据量大的列表项必须用到这种技术.由于我现在的项目属于管理后台,管理来自成千上万用户的数据,因而只能用到第二种方法.初期

django分页技术Paginator(进阶篇)

一.概述 在之前的另一篇博文中介绍了在django中进行分页的两种方法,可是说基本上实现了分页刷新的功能,但存留一个问题,那就是当页数多的时候,会出现所有页码排开的情况,美观性不好不说,更主要的是当页码多的时候,分页栏会变得很长.所以对之前的做法进行重构的同时,也实现了定义分页栏显示页码个数的功能. 最终效果: 本博文旨在深化理解Paginator的使用,当然熟悉后也可以实现"跳转","下5页"类似的功能. 二.Paginator 博文提到,在一个页面中使用多个表,

django分页技术paginator

分页是Web应用常用的手法,Django提供了一个分页器类Paginator(django.core.paginator.Paginator),可以很容易的实现分页的功能.该类有两个构造参数,一个是数据的集合,另一个是每页放多少条数据. 分页对象Paginator: 只需提供两个必要的参数,第一个就是用于展示的数据(object_list),第二参数就是每页显示的大小(per_page),提供了这两个参数,其他的都好说: Paginator.count:数据总量 Paginator.num_pa

django分页 Paginator

分页功能是几乎所有的网站上都需要提供的功能,当你要展示的条目比较多时,必须进行分页,不但能减小数据库读取数据压力,也有利于用户浏览. Django又很贴心的为我们提供了一个Paginator分页工具,但是不幸的是,这个工具功能差了点,不好添加CSS样式,所以前端的展示效果比较丑.如果你能力够,自己编写一个分页器,然后提交给Django官方吧,争取替代掉这个当前的分页器,我看好你哦! 但不管怎么样,当前的Paginator分页器,还是值得学一下用一下的. 一.实例展示 向Paginator提供包含

django分页功能,templatetags的应用

django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www.china.cn'>中国</a>''' format_html(html) django分页 分页功能基本操作 from django.core.import Paginator li=[11,12,13,22,24,25] p=Paginator(li,3) #将li传入,每页显示3条 p

django分页使用方法

当我们从后台数据库读取数据,出现太多的时候会很难看,这个时候就要用到分页功能,django带有的分页模块非常好用,这几天在研究,今天跟大家分享一下直接启动代码: [[email protected] oms]# ./manage.py shell      #启动后台 >>> from django.core.paginator import Paginator    导入模块>>> objects = ['xiaoluo','test','huihui','xiaox

{oldboy-django][2深入django]分页功能

1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/boots

Cookie、Session和Django分页

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要“保持状态”.因此cookie就是在这样一个场景下诞生.

Django 分页查询并返回jsons数据,中文乱码解决方法

一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF-8 import os from django.core import serializers from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage from django.shortcuts import render from django.http import