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 ...
随机推荐
- 【ActiveMQ】使用学习
[ActiveMQ]使用学习 转载: 1.启动 activemq start 2.停止 activemq stop http://localhost:8161 admin / admin Queue ...
- MySQL安装及配置最详细教程
https://blog.csdn.net/Mxdon_on/article/details/89461513 概述 MySQL作为最常用的数据库,手动安装的方法还是稍微有些弯弯 首先下载安装包 (官 ...
- Maven pom.xml 全配置(一)常用配置
Maven pom.xml 全配置(一)常用配置 这里贴出一个Maven中出现频率较高的配置参数注释,方便理解项目中Maven的配置具体的作用.如果在此博文中没有找到你想看到的参数,可以移步Maven ...
- VS2017 无法修改代码编辑区的项背景颜色问题
以前都是好好的,安装 ClaudiaIDE: https://github.com/buchizo/ClaudiaIDE 之后也没啥问题,用着用着代码编辑区自定义的颜色就没有了,好几台电脑都是这样, ...
- JS---封装缓动(变速)动画函数---增加多个任意多个属性
封装缓动动画函数---增加多个任意多个属性 在原来缓动动画函数,增加任意一个属性的基础上,做了如下改变 1. 原来function animate(element, attr, target),三个变 ...
- Linux 版本控制工具之rabbitvcs
原文地址:http://www.robotshell.com/2017/11/04/Linux-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E5%B7%A5%E5%85% ...
- C++之下载Visual Studio Installer缓慢问题
将IPv4中设置DNS首选项为8.8.8.8即可.
- 【SVN搭建】搭建SVN服务
1.安装 # yum -y install subversion 2.配置 创建仓库 我们这里在/opt下建立一个名为svn的仓库(repository),所有代码都可以放在这个下面,创建成功后在sv ...
- UWP 在ShellPage.xaml.cs 中导航至其他页面引发System.Exception
最近有一个需求,需要App监测网络变化,并在网络变化的同时用户,你切网啦,并且导航至一个切网的特定页面. 和Android.iOS的小伙伴后共同发现,人家有一个类似”拦截器“的框架,可以拦截App发出 ...
- Spring Boot 为什么这么火?
没错 Spring Boot 越来越火了,而且火的超过了我的预期,作为一名行走一线的 Java 程序员,你可能在各个方面感受到了 Spring Boot 的火. Spring Boot 的火 技术社区 ...