django 1.97 paginator实现分页功能

网上搜的攻略有问题,碾转了好几个教程,最后得到完善的。以下是总结的教程,希望大家少走弯路。

 首先声明 1.97版本不需要在setting.py里设置任何东西。   直接可以导入分页paginato .而以前的版本好像还需要导入配置。 我耗费了大量的时间在配置上,最后却不需要配置。此处大误。 

数据库

#新闻
class New(models.Model):
    title = models.CharField(u'标题', max_length=256)
    content = models.TextField(u'内容')

    pub_date = models.DateTimeField(u'发表时间', auto_now_add=True, editable = True)
    update_time = models.DateTimeField(u'更新时间',auto_now=True, null=True)

    def __unicode__(self):
        return self.title

视图

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
def new(request):
    blogs = New.objects.all()
    paginator = Paginator(blogs, 5)  # 每页显示数据条数

    page = request.GET.get('page')
    try:
        blogs = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        blogs = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        blogs = paginator.page(paginator.num_pages)
    return render(request, 'new.html', {'blogs': blogs})
return render(request, 'product.html', {'contacts': contacts})

前端  

{% for blog in blogs %}

    <div>
        {{blog.title}}
        {{blog.content|truncatechars:100}}
        </div>
{% endfor %}

<div class="pagination">
{% if blogs.has_previous %}
        <a class='paginator' title='上一页' href='?page={{ blogs.previous_page_number }}'><span>&lt;&lt;</span></a>
 {% endif %}
 {% for page in blogs.paginator.page_range %}
     {% if page = blogs.number %}
         <a class='paginator_current' title='当前页:{{ page }}'><span>{{ page }}</span></a>
     {% else %}
         <a class='paginator' href='?page={{ page }}' title='{{ page }}'><span>{{ page }}</span></a>
     {% endif %}
 {% endfor %}
 {% if blogs.has_next %}
     <a class='paginator' title='下一页' href='?page={{ blogs.next_page_number }}'><span>&gt;&gt;</span></a>
 {% endif %}
</div>

最后  实现效果。  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值