原文:http://mozillazg.com/2013/01/django-pagination-by-use-paginator.html
在 django 中使用 Paginator 可以很方便的实现分页功能,下面就通过一个具体的例子来讲讲如何使用 Paginator。
在 view 中使用 Paginator
from django.core.paginator import Paginatorfrom django.core.paginator import EmptyPagefrom django.core.paginator import PageNotAnIntegerfrom hello.models import Topicdef index(request): limit = 3 # 每页显示的记录数 topics = Topic.objects.all() paginator = Paginator(topics, limit) # 实例化一个分页对象 page = request.GET.get('page') # 获取页码 try: topics = paginator.page(page) # 获取某页对应的记录 except PageNotAnInteger: # 如果页码不是个整数 topics = paginator.page(1) # 取第一页的记录 except EmptyPage: # 如果页码太大,没有相应的记录 topics = paginator.page(paginator.num_pages) # 取最后一页的记录 return render_to_response('index.html', {'topics': topics})
模板中的相关操作
{% for topic in topics.object_list %} {{ topic.title }}{% endfor %}<!-- 第一种分页显示方式 --> {# topics.paginator.page_range 这个函数返回包含一个所有页码数的 range 对象 #} {# 即 range(1, topics.paginator.num_pages + 1) #} {% for page_number in topics.paginator.page_range %} {% ifequal page_number topics.number %} {{ page_number }} {% else %} {{ page_number }} {% endifequal %} {% endfor %}<!-- 另一种分页显示方式 -->{% if topics.has_previous %} Previous {% endif %} {# topics.paginator.number_pages 返回总页数 #} Page {{ topics.number }} of {{ topics.paginator.num_pages }}.{% if topics.has_next %} Next{% endif %}
效果:
基于 django 1.4.3 的示例项目:仓库?&&?下载?。
原文地址:使用 Paginator 实现分页功能, 感谢原作者分享。 关于爱情简短的句子