1. 概述
django真的有好多简单方便好用的轮子!!!
这次介绍的这个是用于分页的,django中本身提供了实现分页的对象,但是每次都要写一堆业务代码,也是神烦。
在django-awesome项目中发现了这个轮子:
文档也很简单,三四页的样子。
下面一起来探索一下吧!
2. 快速实现
A. 将以下配置加入settings文件中.
1. 加入app
INSTALLED_APPS += (
'dj_pagination' ,
)
2. 加入中间件
Django 版本低于1.10 使用 MIDDLEWARE_CLASSES
MIDDLEWARE += (
'dj_pagination.middleware.PaginationMiddleware' ,
)
3. 添加模板上下文处理器
TEMPLATE_CONTEXT_PROCESSORS 默认情况下是隐式设置,这里声明出来以了解用了哪些处理器
TEMPLATE_CONTEXT_PROCESSORS =(
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request"
)
B. html模板文件
这里假设传入模板的查询集列表是object_list
1. 在html的最上面声明使用pagination_tags 模板标签
{% load pagination_tags %}
2. 自动分页处理器
语法为autopaginate QUERYSET [PAGINATE_BY] [ORPHANS] [as NAME]
其中PAGINATE_BY
是分页时每页的对象个数,默认为20
{% autopaginate object_list 10 as object_list_page %}
3. 使用分页对象
这里的显示效果自己写html+css即可
{% for object in object_list_page%}
<div>object.title</div>
<div>object.name</div>
{% endfor %}
4. 生成页码
{% paginate %}
以上几步完成之后分页就完成了,没有复杂的逻辑!你只需要提供一个object_list
列表即可!
3. 其他功能
3.1 自定义分页模板
pagination/blog/post.html
是你的模板位置
默认使用pagination/pagination.html
{% autopaginate posts pagesize %}
{% paginate using "pagination/blog/post.html" %}
3.2 同个模板中多次使用分页
你可以多次使用autopaginate/paginate
,需要注意的是你必须在使用paginate
前使用autopaginate
.
3.3 其他设置
PAGINATION_INVALID_PAGE_RAISES_404
对应页码无效的页码是抛出404错误(True)还是不显示对象(False 默认).
PAGINATION_DISPLAY_PAGE_LINKS
如果设置为False,分页结果为单页则不将显示页码。默认为True, 单页也显示页码。
PAGINATION_PREVIOUS_LINK_DECORATOR
'上一页'链接的HTML内容前缀,默认为`‹‹`也就是 `<<`
PAGINATION_NEXT_LINK_DECORATOR
'下一页'链接的HTML内容前缀,默认为`››`也就是 `>>`
PAGINATION_DISPLAY_DISABLED_PREVIOUS_LINK
如果设置为False,如果没有上一页则显示上一页链接。默认为False。
PAGINATION_DISPLAY_DISABLED_NEXT_LINK
如果设置为False,如果没有下一页则显示下一页链接。默认为False。
PAGINATION_DISABLE_LINK_FOR_FIRST_PAGE
如果设置为False,第一页将`?page=1`显示分页的链接后缀,否则(True)将被忽略。默认为True。
机器翻译(以后优化…)
关于上传的说明
当把dj-pagination和文件上传一起使用时,要注意什么时候request.page被访问是很重要的。一旦 request.page被访问,request.upload_handlers被冻结,不能以任何方式改变。page在视图中尽可能晚地访问请求对象上的属性是一个好主意。
可选设置
在dj-pagination中,没有必要的设置。但是,有一小部分可选设置可用于更改分页标签的默认行为。这里有一个概述:
PAGINATION_DEFAULT_PAGINATION
如果未指定编号,则显示在页面上的默认项目数量。默认为20
PAGINATION_DEFAULT_WINDOW
显示当前页面左侧和右侧的项目数(占椭圆)。默认为4。
PAGINATION_DEFAULT_MARGIN
FIXME:这需要记录。
PAGINATION_DEFAULT_ORPHANS
允许的ORPHANS数。根据Django文档,ORPHANS被定义为:
在最小数目的项目允许上的最后一个页面,默认到零。
版权声明:本文为weixin_39198406原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。