Pagination for class based generic views in Django 1.3

Category: /blog /django
Tags: 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.

举例

Pagination in tempalte

其实上面这段代码具有通用性, 完全可以做成一个simple tag 放在template_utils里. 等写到tag相关的地方时我会用这个当例子的.

讨论

提示

  • 如果看不到讨论部分, 请暂时关掉adblock in Firefox/Chrome
  • 本网站使用Javascript实现评论功能, 此处外链对提高您的网站PR没有帮助. (潜台词: 请不要灌水, 谢谢)