Pagination for class based generic views in Django 1.3
Category: /blog /djangoTags: django
在Django 1.3以前已经有了好几个做得相当不错的Django pagination package.
Django 1.3学习了Django-pagination
的优点, 在class based generic view
里提供了简单明了的API. 不足之处是在官方文档里没有一处列是一个简单的举例说明. 下面是我东查西找的一个最简单的教程.
比如说我想在Category
列表里每10个分一页, 只要在view
里定义paginate_by
,
views.py
class MyCategoryListView(ListView):
model = Category
context_object_name="categories"
paginate_by=10
主要功课在template
里, 这里有几个默认参数:
- object_list: 这和generic view里定义的一致, 当然可以通过
context_object_name
来代换 - is_paginated: 定义有没有开启pagination功能
- paginator: An instance of django.core.paginator.Paginator.
- page_obj: An instance of django.core.paginator.Page.
举例
其实上面这段代码具有通用性, 完全可以做成一个simple tag 放在template_utils
里. 等写到tag
相关的地方时我会用这个当例子的.