关注各种黑科技
B站UP主,编程教学,游戏玩家,挂B,金牛座

Django2.0 分页pagination的使用

这一节 我来介绍一下django的内置的分页功能。

分页大家应该都见过的,给大家看一些例子。
例如。。。
也有一些变态的分页

现在时代不一样了,很多网站的分页都做成了无限滚动ajax加载,为了简化手机用户的操作,提升用户体验。

首先需要了解的概念是,django为我们提供了一个分页类,我们只要实例话这个类,再给他提供一些需要分页的数据就可以了。

先带大家浏览一下官方的文档介绍。

代码
django/core/paginator.py

p = Paginator(objects, 2)
参数1 一个用于分页的对象,参数2 每页存放多少数据

>>> from django.core.paginator import Paginator
>>> objects = ['john', 'paul', 'george', 'ringo']
>>> p = Paginator(objects, 2)

>>> p.count
4
>>> p.num_pages
2
>>> type(p.page_range)
<class 'range_iterator'>
>>> p.page_range
range(1, 3)

>>> page1 = p.page(1)
>>> page1
<Page 1 of 2>
>>> page1.object_list
['john', 'paul']

>>> page2 = p.page(2)
>>> page2.object_list
['george', 'ringo']
>>> page2.has_next()
False
>>> page2.has_previous()
True
>>> page2.has_other_pages()
True
>>> page2.next_page_number()
Traceback (most recent call last):
...
EmptyPage: That page contains no results
>>> page2.previous_page_number()
1
>>> page2.start_index() # The 1-based index of the first item on this page
3
>>> page2.end_index() # The 1-based index of the last item on this page
4

>>> p.page(0)
Traceback (most recent call last):
...
EmptyPage: That page number is less than 1
>>> p.page(3)
Traceback (most recent call last):
...
EmptyPage: That page contains no results

注意点
Note that you can give Paginator a list/tuple, a Django QuerySet, or any other object with a count() or len() method. When determining the number of objects contained in the passed object, Paginator will first try calling count(), then fallback to using len() if the passed object has no count() method. This allows objects such as Django’s QuerySet to use a more efficient count() method when available.

再下来就是官方给的例子了,我们转换一下适应现在的博客代码。

最后介绍了2个类的API Paginator objects ,Page objects

参考
http://devdocs.io/django~2.0/topics/pagination

转载请注明出处
分享到: 更多 (0)

评论 0