标签:model except empty 页码 png href 范围 127.0.0.1 import
from django.core.paginator import Paginator objects = Post.objects.filter(status=‘published‘) #从数据库中取出所有status=published状态的文章 p = Paginator(objects,3) #实例化Paginator对象,3条数据为一页 print(p.count) #一共有多少条数据 print(p.num_pages) #一共可以分为多少页 page1 = p.page(1) #取第一页的数据 page2 = p.page(2) #取第二页的数据
print(page2.has_previous) #判断第二分页是否有前一页,有则返回True,否则False print(page2.has_next) #判断第二分页是否有下一页,有则返回Trur,否则False
print(page2.previous_page_number) #返回上一页的页码,如果上一页不存在跑出InvalidPage异常 print(page2.next_page_number) #返回下一页的页码,如果下一页不存在抛出InvalidPage异常
views.py
from django.shortcuts import render,get_object_or_404 from django.core.paginator import Paginator, PageNotAnInteger,EmptyPage # Create your views here. from blog.models import Post def post_list(request): object_list = Post.objects.filter(status=‘published‘) #每页显示3个 paginator = Paginator(object_list,3) #获取前端传过来的要访问的页面数,比如说去第一页,就传过来1 page = request.GET.get(‘page‘) print(page) try: #比如说第一页,就返回第一页的数据 posts = paginator.page(page) except PageNotAnInteger: #如果传过来的页面数不是整数,就返回第一页 posts = paginator.page(1) except EmptyPage: #如果传过来的页面数超出范围,就返回最有一夜 posts = paginator.page(paginator.num_pages) return render(request,‘blog/post/list.html‘,{‘posts‘:posts})
list.html
<div class="pagination"> <span class="step-links"> #如果有上一页的话 {% if posts.has_previous %} #发一个get请求到views.py的post_list函数,比如?page=1,就是127.0.0.1:8000/blog?page=1,去第一页的意思 <a href="?page={{ posts.previous_page_number }}">上一页</a> {% endif %} <span class="current">
#page 2 of 3,意思就是目前在第二页,一共有三页. post.number返回当前在第几页,num_pages返回一共有多少页 Page {{ posts.number }} of {{ posts.paginator.num_pages }}. </span> #如果有下一页的话 {% if posts.has_next %} #发一个get请求到views.py的post_list函数,比如?page=2,就是127.0.0.1:8000/blog?page=2,去第二页的意思 <a href="?page={{ posts.next_page_number }}">下一页</a> {% endif %} </span> </div>
流程:
------->这个是效果图
标签:model except empty 页码 png href 范围 127.0.0.1 import
原文地址:http://www.cnblogs.com/zhaijunming5/p/7090807.html