21-django-pure-pagination分页
一、django-pure-pagination分页
github上的描述(django-pure-pagination provides advanced pagination features and is fully compatible with existing code based on Django's core pagination module. (aka no need to rewrite code!)),意思就是说Django-pure-pagination是基于Django的核心分页模型上开发出来,更好地去开发,当然目标是唯一的,但工具是多样的,只要实现目标,那么也是可以的。如果Bootstrap(衣服)会的也可以用Bootstrap实现分页的效果图。
要求:
Django 1.7+
1、在自己开发项目环境(虚拟环境下安装包):
pip install django-pure-pagination
或者从github上将源码克隆下来(这样可以使用最新的功能啦):
git clone git@github.com:jamespacileo/django-pure-pagination.git cd django-pure-pagination python setup.py install
2、安装好环境那么去Django项目中配置settings中的INSTALL_APPS里注册pure-pagination:
INSTALLED_APPS = (
...
'pure_pagination',
)
3、接下来注册完就可以使用啦,去到视图中导入模板并查询相关数据分页:
from pure_pagination import Paginator,EmptyPage,PageNotAnInteger
def get(self,request):
all_teachers = Teacher.objects.all()
# 对老师列表进行分页
try:
#取出页码值,如果没有页码值默认为1
page = request.GET.get("page", )
#如果是字符串的话也是默认为1
except PageNotAnInteger:
page =
#对从数据库查出来的所有对象以10个记录作为一页返回Paginator对象
p = Paginator(all_teachers, , request=request)
#对象有page方法参数是页数,返回的是对象列表和当前的页数
teachers = p.page(page)
#将每一页数据传入然后由模板渲染
return render(request,"teachers-list.html",{
"all_teachers":teachers,})
Paginator对象初始化:
def __init__(self, object_list, per_page, orphans=, allow_empty_first_page=True, request=None):
4、对模板的数据写入:
<div class="butler_list layout">
<div class="head">
<ul class="fl tab_header">
<li {% if sort == "" %}class="active"{% endif %}><a href="?sort=">全部</a> </li>
<li {% if sort == "hot" %}class="active"{% endif %}><a href="?sort=hot">人气 &#;</a></li>
</ul>
<div class="fr butler-num">共<span class="key">{{ all_teachers|wordcount }}</span>人 </div>
</div>
{#all_teachers.object_list这是每一条记录的遍历,all_teachers是Paginator对象的page方法,方法返回值object_list与number,然而object_list#}
{#是每一页的所有记录,因此需要用Paginator.page对象去遍历出每条记录#}
{% for teacher in all_teachers.object_list %}
<dl class="des">
<dt>
<a href="{% url "org:teacher_detail" teacher.id %}">
<div class="picpic">
<img width="" height="" class="scrollLoading" src="{{ MEDIA_URL }}{{ teacher.image }}"/>
</div>
</a>
<div class="btn">
<div class="fr btn2 bdsharebuttonbox"
data-text="授课教师-{{ teacher.name }}-慕学在线"
data-desc="{{ teacher.points }}"
data-comment="{{ teacher.name }}金牌讲师,从业年限:{{ teacher.work_years }}年"
>
<span class="fl">分享</span>
<a href="#" class="bds_more" data-cmd="more"></a>
</div>
</div>
</dt>
<dd>
<a href="{% url "org:teacher_detail" teacher.id %}">
<h1>{{ teacher.name }}<span class="key picbig">金牌讲师</span></h1>
</a>
<ul class="cont">
<li>工作年限:<span>{{ teacher.work_years }}年</span></li>
<li>工作职位:<span>{{ teacher.work_position }}</span></li>
<li>就职公司:<span>{{ teacher.work_company }} </span></li>
<li>年龄:<span>{{ teacher.age }}岁</span></li>
<li>教学特点:<span>{{ teacher.points }}</span></li>
</ul>
</dd>
<a class="buy buyservice" href="{% url "org:teacher_detail" teacher.id %}"><br/>查看<br/>详情</a>
</dl>
{% endfor %} </div>
5、模板页码操作:
<div class="pageturn">
<ul class="pagelist">
{% if all_teachers.has_previous %}
<li class="long"><a href="?{{ all_teachers.previous_page_number.querystring }}">上一页</a></li>
{% endif %}
{% for page in all_teachers.pages %}
{% if page %}
//all_teachers的方法number就是有Paginator对象的page方法传回
{% ifequal page all_teachers.number %}
<li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li>
{% else %}
<li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li>
{% endifequal %}
{% else %}
<li class="none"><a href="">...</a></li>
{% endif %}
{% endfor %}
{% if all_teachers.has_next %}
<li class="long"><a href="?{{ all_teachers.next_page_number.querystring }}">下一页</a></li>
{% endif %}
</ul>
</div>
21-django-pure-pagination分页的更多相关文章
- Django 利用 Pagination 分页
Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签.这个类叫做Pagination,其定义位于 django/core/paginator.py 中. 一 ...
- Django框架 之 Pagination分页实现
Django框架 之 Pagination分页实现 浏览目录 自定义分页 Django内置分页 一.自定义分页 1.基础版自定义分页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- django: django rest framework 分页
django: django rest framework 分页 2018年06月22日 13:41:43 linux_player_c 阅读数:665更多 所属专栏: django 实战 版权声 ...
- Django内置分页
一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...
- Django拾遗--pagination、sitemap、admin、form
Django拾遗--pagination.sitemap.admin.form pagination 其实这个分页模块的原理就是根据设定的每页条数来分割queryset.查询结果/每页子项数目=页数 ...
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- jQuery Pagination分页插件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- django: rest-framework的 分页和过滤
django: rest-framework的 分页和过滤 2018年06月28日 10:09:01 weixin_42359464 阅读数:136 标签: flaskrestframeworkdja ...
- django视图之分页
在网站开发时,肯定会遇到分页的事情需要处理,在django中也是如此,在Django中处理分页一般会使用到两个类django.core.paginator.Paginator和django.core. ...
- django上课笔记2-视图CBV-ORM补充-Django的自带分页-Django的自定义分页
一.视图CBV 1.urls url(r'^login.html$', views.Login.as_view()), 2.views from django.views import View cl ...
随机推荐
- python之encode和decode编码
u = '中文' str3 = u.encode('utf-8') # 以utf-8编码对u进行编码,获得bytes类型对象 print(str3) u2 = str3.decode('utf-8') ...
- SQL-SQL查询检索阶段二
一 前提准备 先声明一下,下面的库表只是简易的学习示例,不是生产的设计,不要深究,此文我们的目的是学习sql的检索不是库表设计:初学者最好跟着作者的文章一步一步敲一遍,如果没有使用过sql的可以查阅作 ...
- 《Java基础知识》Java线程的概念
按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发集合源码的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或 ...
- HCTF_2018-Writeup【web题】
HCTF_2018-Writeup 赛题来自:BUUCTF By:Mirror王宇阳 WarmUp: 打开赛题的页面源码(F12) <!DOCTYPE html> <html lan ...
- PromiseKit基本使用及源码解析
Promise处理一系列异步操作的应用框架,能够保证顺序执行一系列异步操作,当出错时可以通过catch捕获错误进行处理.Promise框架也是很好的诠释了swift的面相协议编程以及函数式编程 两种类 ...
- deinit 没执行
写了一个自定义的UIView,其中包含代理 然后设置UIViewController为此UIView的代理 结果UIViewController里的deinit没执行,导致内存 ...
- IntelliJ IDEA 安装、配置和使用Lombok插件
Lombok 可用来帮助开发人员消除 Java 的重复代码,尤其是对于简单的 Java 对象(POJO),比如说getter/setter/toString等方法的编写.它通过注解实现这一目的.官网: ...
- 【zabbix监控】zabbix监控tomcat服务
服务器配置(zabbix_server) 1. 安装jdk 版本需要1.7以上,我这边安装的是1.8的,可以参考我jdk安装的文章 # 上传到zabbix_server服务端.安装(jdk-8u171 ...
- C#/.Net开发入门篇(2)——第一个控制台应用程序
相信看了上一篇文章的小伙伴已经安装好自己的开发工具了VS了,这一篇文章就教大家怎么创建第一个应用程序. 下面大家跟着我的操作一起来创建自己的第一个应用程序吧 一.打开VS工具点击左上角的文件→新建→项 ...
- HALCON数据类型和C#对应数据类型的对比
摘要:HALCON数据类型:Iconic Variables(图形变量).Control Variables(控制变量).在C#中,图形变量用HObject声明,控制变量用HTuple声明.(halc ...