2009-01-12 10:16:02
Comments[0]
以前的分页是从网上搜索的一些代码,居然不知道Django有ObjectPaginator这么个东西。最近看看了Gae Cookbook上的几个关于django分页的处方,其实用ObjectPaginator做分页模板非常简单。
ObjectPaginator的构造函数需要提供query_set和num_per_page这两个参数,也就是你要使用的数据集和每页的文章数。还有一个orphas参数默认为0,用来避免出现最后一页文章过少的情况。
def __init__(self, query_set, num_per_page, orphans=0):
self.query_set = query_set
self.num_per_page = num_per_page
self.orphans = orphans
self._hits = self._pages = None
这里我只生成了一个文章分页的数量列表和前一页、下一页三个链接,然后用ObjectPaginator类的方法判断这些链接是否显示,也就是用get_page()方法来取得当前请求页面的文章,用has_next_page()方法判断是否存在下一页,用has_previous_page()方法判断是否存在前一页。
paginator = ObjectPaginator(all_posts,10) if page >= paginator.pages: page = paginator.pages - 1 posts=paginator.get_page(page) pages=range(1,paginator.pages+1) show_prev = paginator.has_previous_page(page) show_next = paginator.has_next_page(page) page=page+1
参考: