Django中的灵活分页

3 django pagination

我想实现分页,以便可以允许用户选择每页的记录数,例如10、25、50等。我该如何处理?有可以添加到我的项目中的应用程序吗?

谢谢

T. *_*one 5

Django在核心中内置了Paginator对象。这是一个相当简单的API。Paginator使用两个参数实例化一个类:列表和每个“页面”的条目数。我将在底部粘贴一些示例代码。

在您的情况下,您要允许用户选择每页计数。您可以使每页计数成为URL的一部分(即your / page / 10 /),也可以使其成为查询字符串(即your / page /?p = 10)。

就像是...

# Assuming you're reading the Query String value ?p=
try:
    per_page = int(request.REQUEST['p'])
except:
    per_page = 25     # default value

paginator = Paginator(objects, per_page)
Run Code Online (Sandbox Code Playgroud)

以下是Django文档页面中一些用于Paginator的示例代码,以更好地了解其工作方式。

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

>>> p.count
4
>>> p.num_pages
2
>>> p.page_range
[1, 2]

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

  • 除了使用try / except之外,您还可以使用accessor方法并提供默认值:`per_page = int(request.REQUEST.get('p',25))` (2认同)