在此教程的分页方法已经在1.5版本中不再适用。当前版本的分页在urls配置时实现,其代码如下:
from django.conf.urls.defaults import *
from newtest.address.models import Address
info_dict = {
# 'model': Address,
'queryset': Address.objects.all(),
}
urlpatterns = patterns('',
(r'^/?$', 'django.views.generic.list_detail.object_list',
dict(paginate_by=10, **info_dict)),
(r'^upload/$', 'address.views.upload'),
(r'^output/$', 'address.views.output'),
)
通过设置paginate_by的值,每页显示十条queryset的信息。实现django1.5版本中的分页方法如下:
第一、在views.py中添加listing类
#coding=utf-8
from django.shortcuts import get_object_or_404 , render_to_response , loader
from django.template import Context, Template
from django.views.generic.list import ListView
from address.models import Address
from django.http import HttpResponseRedirect ,HttpResponse
from django.core.paginator import Paginator,EmptyPage, PageNotAnInteger
def listing(request,pagenum):
address_list = Address.objects.all()
paginator = Paginator(address_list , 4)
if not pagenum:
pagenum = 1
page = pagenum
#if not page:
# page = 1
try:
addresses = paginator.page(page)
except EmptyPage:
addresses = paginator.page(paginator.num_pages)
except PageNotAnInteger:
addresses = paginator.page(1)
return render_to_response('address/address_list.html',{"address_list":addresses})
第二、配置相应的url,在urls.py文件中添加如下代码
url(r'^list/((?P[0-9]+)/)?$', 'address.views.listing'),
第三、实现template文件
{% if address_list.has_previous %} 上一页 {% endif %} Page {{ address_list.number }} of {{ address_list.paginator.num_pages }} {% if address_list.has_next %} 下一页 {% endif %}