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

在此教程的分页方法已经在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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值