您的位置:首页 > 编程语言 > Go语言

在Django 1.5 中 Django Step by Step (九)教程分页实现方法的修正

2014-03-20 20:25 751 查看
在此教程的分页方法已经在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 %}


第四、启动server,打开http://127.0.0.1:8000/address/list/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: