第三方分页模块: 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">&lsaquo;&lsaquo; 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 &rsaquo;&rsaquo;</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">&lsaquo;&lsaquo; {% 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实战的更多相关文章

  1. 【django之分页器】

    一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页print("count:&qu ...

  2. Django组件——分页器和中间件

    分页器 Django内置分页器(paginator) 分页器函数为paginator,里面有几个重要的参数需要我们了解 paginator = Paginator(book_list, 10) #第二 ...

  3. Django框架----分页器(paginator)

    Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...

  4. Django - 文件上传、Django组件 - 分页器(paginator)

    一.文件上传准备知识 - Content-Type 1.请求头 - Content-Type Content-Type指的是请求体的编码类型,常见的类型共有3种: 1)application/x-ww ...

  5. Django 进阶(分页器&中间件)

    分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views h ...

  6. 使用Django实现分页器功能

    要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页 ...

  7. django自定义分页器

    一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...

  8. Django组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  9. django的分页器

    Django中分页器的使用 django分页器模块 #分页器 from django.core.paginator import Paginator,EmptyPage,PageNotAnIntege ...

随机推荐

  1. PHP 连接oracle

    function connect_oracle(){ static $dbconn = false; if(!$dbconn){ $db_server = "127.0.0.1"; ...

  2. FastCGI在nginx中的参数

    FastCGI参数 fastcgi主要用于http调用外部解释器的接口,采用c/s结构,可以将http服务器和脚本解析器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程.当HTTP服务器每 ...

  3. 【转】 编写C#调用的C++DLL

    最近一段时间,经常遇到这些问题,前一阵子研究了一下,没有记下来,没想到最近研究又有些不记得了,今天把它写下来以备忘. 一般我们提供给其他语言调用的DLL,都是用C或者C++编写,然后封装.我这边也是采 ...

  4. 杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析

    说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一  基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三 ...

  5. 【技术分享会】 @第五期 angularjs

    前言 AngularJS 最初由Misko Hevery 和Adam Abrons于2009年开发,后来成为了Google公司的项目.AngularJS弥补了HTML在构建应用方面的不足,其通过使用标 ...

  6. WP8.1学习系列(第三章)——磁贴和锁屏通知

    一.创建默认磁贴 创建默认磁贴,不需要任何代码只有制作几张图片就可以了. 1.创建工程之后,在工程目录找到package.appxmanifest,打开它. 2.在应用程序栏,通知选项,选择徽章和图块 ...

  7. 【cs229-Lecture4】GLMS:选定指数分布族,如何用它来推导出GLM?

    在Lecture4中有3部分内容: Newton’s method        牛顿方法 Exceponential Family        指数分布族 Generalized Linear M ...

  8. 很好用的php在线调试工具

    什么叫在线调试?就是在线上生产环境进行调试,假设有一天某个用户报某个页面某个数据怎么不对啊,看来线上出BUG了,于是你要迅速找出原因,首先看日志,可是悲剧的没有足够的日志让你确定线上BUG的原因,也许 ...

  9. QT开发之旅一DS7400主机调试工具

    接触QT三年有余,期间因为工作需要断断续续学习过,2010年开始接触,当时好像是4.7版本,现在都已经到5.2版本了,更新真快,前阵子安装了下5.2版本,还是有很多变化的,不过感觉好像编译速度慢了很多 ...

  10. 【SpringCloud微服务实战学习系列】创建应用及解析

    一.创建应用 使用官方Spring Initializr工具生成基础项目(http://start.spring.io/) 导入Intellij idea中 目录结构如下: 二.目录结构说明: src ...