[py]django第三方分页器django-pure-pagination实战
第三方分页模块: django-pure-pagination 是基于django的pagination做的一款更好用的分页器
配置django-pure-pagination模块
- 安装
pip install django-pure-pagination
- 添加pure_pagination app
settings.py
INSTALLED_APPS = [
...
'users',
'pure_pagination',
]
urls.py
from users import views
urlpatterns = [
path('', views.index, name="index"),
path('admin/', admin.site.urls),
]
views.py
from pure_pagination import Paginator, EmptyPage, PageNotAnInteger
def index(request):
try:
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1
# 要返回的所有数据
objects = ['john', 'edward', 'josh', 'frank','john', 'edward', 'josh', 'frank','john', 'edward', 'josh', 'frank']
# 分页器分页后的数据返回,Provide Paginator with the request object for complete querystring generation
p = Paginator(objects, 5, request=request)
people = p.page(page)
return render(request, 'index.html', {"poeple": people})
index.html
{% for p in poeple.object_list %}
<div>
First name: {{ p }}
</div>
{% endfor %}
{# The following renders the pagination html #}
<div id="pagination">
{{ poeple.render }} {# 渲染页码 #}
</div>

<div id="pagination">
{{ poeple.render }} {# 渲染页码 #}
</div>
渲染成html为
<div class="pagination">
<span class="disabled prev">‹‹ previous</span>
<span class="current page">1</span>
<a href="?page=2" class="page">2</a>
<a href="?page=3" class="page">3</a>
<a href="?page=2" class="next">next ››</a>
</div>
自定义样式1
参考: https://github.com/jamespacileo/django-pure-pagination


{% for p in people.object_list %}
<div>
First name: {{ p }}
</div>
{% endfor %}
{# 这是默认样式 The following renders the pagination html #}
{#<div id="pagination">#}
{# {{ poeple.render }}#}
{#</div>#}
{##}
{#自定义样式#}
<div class="pagination">
{# 如果有前一页,显示前一页,如果没有,则啥都不显示 #}
{% if people.has_previous %}
<a href="?{{ people.previous_page_number.querystring }}" class="prev">上一页</a>
{# {% else %}#}
{# <span class="disabled prev">‹‹ {% trans "previous" %}</span>#}
{% endif %}
{# 当前页显示 #}
{% for page in people.pages %}
{% if page %}
{% ifequal page people.number %} {# 如果是当前页,就显示当前页 #}
<span class="current page">{{ page }}</span>
{% else %}
<a href="?{{ page.querystring }}" class="page">{{ page }}</a>
{% endifequal %}
{% else %}
... {# 如果 #}
{% endif %}
{% endfor %}
{# 下一页的显示逻辑 #}
{% if people.has_next %}
<a href="?{{ people.next_page_number.querystring }}" class="next">下一页</a>
{% endif %}
</div>
自定义样式2

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义样式</title>
<style>
.pageturn {
clear: both;
height: 30px;
margin: 50px auto;
display: table;
text-align: center;
}
.pageturn .pagelist {
display: table-cell;
vertical-align: middle;
overflow: hidden;
}
.pageturn li {
width: 30px;
height: 30px;
line-height: 30px;
margin-left: 10px;
float: left;
text-align: center;
}
.pageturn li:first-child {
margin-left: 0;
}
.pageturn li:hover a, .pageturn .active a {
background: #717171;
color: #fff;
border-color: #eaeaea;
}
.pageturn a {
border: 1px solid #eaeaea;
display: block;
height: 28px;
color: #6c6c6c;
}
.pageturn .long {
width: 100px;
}
.pageturn .none a {
border: 0;
}
.pageright {
float: right;
width: auto;
display: inline;
clear: none;
margin-top: 10px;
}
</style>
</head>
<body>
{% for p in people.object_list %}
<div>
First name: {{ p }}
</div>
{% endfor %}
<div class="pageturn">
<ul class="pagelist">
{% if people.has_previous %}
<li class="long"><a href="?{{ people.previous_page_number.querystring }}">上一页</a></li>
{% endif %}
{% for page in people.pages %}
{% if page %}
{% ifequal page people.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 people.has_next %}
<li class="long"><a href="?{{ people.next_page_number.querystring }}">下一页</a></li>
{% endif %}
</ul>
</div>
</body>
</html>
分页url
不会干掉原来的url的参数, 会连同当前url+page=页一同带回,这样给筛选和排序带来了一定的好处.

[py]django第三方分页器django-pure-pagination实战的更多相关文章
- 【django之分页器】
一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页print("count:&qu ...
- Django组件——分页器和中间件
分页器 Django内置分页器(paginator) 分页器函数为paginator,里面有几个重要的参数需要我们了解 paginator = Paginator(book_list, 10) #第二 ...
- Django框架----分页器(paginator)
Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...
- Django - 文件上传、Django组件 - 分页器(paginator)
一.文件上传准备知识 - Content-Type 1.请求头 - Content-Type Content-Type指的是请求体的编码类型,常见的类型共有3种: 1)application/x-ww ...
- Django 进阶(分页器&中间件)
分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views h ...
- 使用Django实现分页器功能
要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页 ...
- django自定义分页器
一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...
- Django组件-分页器
Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...
- django的分页器
Django中分页器的使用 django分页器模块 #分页器 from django.core.paginator import Paginator,EmptyPage,PageNotAnIntege ...
随机推荐
- Web程序员应该知道的Javascript prototype原理
有同事问了我几个和Javascript的类继承的小问题,我在也不太理解的情况下,胡诌了一通. 回来以后有些内疚, 反省一下, 整理整理Javascript的prototype的原理, 自己清楚点, 也 ...
- 【线程】Volatile关键字
Volatile变量具有 synchronized 的可见性特性,但是不具备原子特性.这就是说线程能够自动发现 volatile变量的最新值.Volatile变量可用于提供线程安全,但是只能应用于非常 ...
- 【大数据系列】hadoop单节点安装官方文档翻译
Hadoop: Setting up a Single Node Cluster. HADOOP:建立单节点集群 Purpose Prerequisites Supported Platforms R ...
- python基础知识-GUI编程-TK-StringVar
1.如何引出StringVar 之前一直认为StringVar就是类似于Java的String类型的对象变量,今天在想要设置StringVar变量的值的时候,通过搜索发现StringVar并不是pyt ...
- Android 本地搭建Tomcat服务器供真机测试
准备工具:tomcat 环境:win7 + JDK1.8 + tomcat 9.0.13(64bit) 准备工具:tomcat 1.tomcat官网下载 https://tomcat. ...
- [Error: Failed to find 'ANDROID_HOME' environment variable. Try setting setting it manually
7down voteaccepted I don't think its necessary to add everything into path.Just add the JAVA_HOME , ...
- CListCtrl使用(转)
CListCtrl使用技巧 以下未经说明,listctrl默认view 风格为report 1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLI ...
- javaAgent 参数
-javaagent 这个JVM参数是JDK 5引进的. Java -help的帮助里面写道: -javaagent:<jarpath>[=<options>] load Ja ...
- 【CF744D】Hongcow Draws a Circle 二分+几何
[CF744D]Hongcow Draws a Circle 题意:给你平面上n个红点和m个蓝点,求一个最大的圆,满足圆内不存在蓝点,且至少包含一个红点. $n,m\le 10^3$ 题解:我们先不考 ...
- dhroid - dhroid ioc模块对 加密混淆问题
大家应该已经看过ioc的知识在ioc基础中中视图事件都是通过注解实现的问题1如果有某个属性只声明了一下,其他代码没有引用由于混淆时会进行属性优化,将没用的属性去掉,这时需要处理 处理方法:在混淆配置文 ...