django 实现分页功能

分页效果:

视图代码:

复制代码

 1 # -*- coding: utf-8 -*-
 2 from django.shortcuts import render,get_object_or_404
 3 from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage  
 4 
 5 from .models import Article
 6 
 7 # Create your views here.
 8 
 9 def index(request):
10     # latest_article_list = Article.objects.order_by('update')[:5]
11     # context = {'latest_article_list':  latest_article_list}
12     # return render(request, 'blog/index.html',context)
13     article_list = Article.objects.all().order_by('cre_date') 
14     paginator = Paginator(article_list,2) #show 2 articles per page
15 
16     page = request.GET.get('page')
17 
18     try:
19         articles = paginator.page(page)
20     except PageNotAnInteger:
21         #页码不是整数,返回第一页。
22         articles = paginator.page(1)
23     except EmptyPage:
24         articles = paginator.page(paginator.num_pages)
25 
26     return render(request, 'blog/index.html', {'articles': articles})

复制代码

paginator是分页实例,page是链接传递到后端的页码参数,articles是每页的实例。

在次例中,paginator是把所有文章(article_list)按照每页两个划分,划成3页。page是前端请求的页码。articles是根据请求页码返回的具体的该页码内的文章(2篇文章)。

paginator和articles的属性和方法详见文档:https://docs.djangoproject.com/en/1.8/topics/pagination/

 

前端代码:

复制代码

 1 <!--分页-->
 2 <nav>
 3   <div class="pagination pagination-right">
 4     <ul >
 5     <li>
 6         {% if articles.has_previous %}
 7             <a href="?page={{ articles.previous_page_number }}" class="active">&laquo;</a>
 8         {% endif %}
 9         {% if not articles.has_previous %}
10             <a href="" >&laquo;</a>
11         {% endif %}
12     </li>
13 
14     <li>
15         {% for i in articles.paginator.page_range %}
16             <li {% if articles.number == i %}class="active"{% endif %}>
17                 <a  href="?page={{ i }}">{{ i }}
18 
19                 </a>
20         </li>
21         {% endfor %}
22     </li>
23 
24     <li>
25         {% if articles.has_next %}
26             <a href="?page={{ articles.next_page_number }}" >&raquo;</a>
27         {% endif %}
28         {% if not articles.has_next %}
29             <a href="" >&raquo;</a>
30         {% endif %}
31     </li>
32 
33     <li>
34         共{{ articles.paginator.num_pages }}页
35     </li>
36     </ul>
37     </div>
38 </nav>
39 <!--ending 分页-->

复制代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值