1. urs.py
1 # coding:utf-8 2 from django.conf.urls import url 3 4 import views 5 6 urlpatterns = [ 7 8 # 分页练习 9 url(r'^herolist/(d*)$', views.herolist, name='herolist'), 10 ]
注意:第9行一定是 d* ,d* 表示至少0个 d+ 表示至少一个
2. models.py
1 # coding:utf-8 2 from __future__ import unicode_literals 3 4 from django.db import models 5 6 class HeroInfo(models.Model): 7 hname = models.CharField(max_length=100) # 主要展示这个字段 8 hgender = models.BooleanField() 9 isDelete= models.BooleanField(default=False) 10 11 def __str__(self): 12 return self.hname.encode('utf-8')
3. views.py
1 # coding:utf-8 2 from django.shortcuts import render 3 from django.core.paginator import Paginator 4 5 from models import BookInfo, HeroInfo 6 7 def herolist(request, current_page): 8 '''分页练习''' 9 if not current_page: 10 current_page = 1 11 list = HeroInfo.objects.all().order_by("id") # 一定要排序 12 paginator = Paginator(list, 5) # 每页5条记录 13 page = paginator.page(int(current_page)) # 获取第一页数据,从1开始 14 context = {'page': page} 15 return render(request, 'book/herolist.html', context)
注意:在取数据的时候要排序(例如第11行),否则可能有如下警告:
UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list:
<class 'book.models.HeroInfo'> QuerySet.
主要是因为取的数据是无序的,Paginator分页会出错
4. herolist.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2 "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <title>分页练习</title> 6 </head> 7 <body> 8 <ul> 9 {% for hero in page %} 10 <li>{{ hero.hname }}</li> 11 {% endfor %} 12 </ul> 13 <hr> 14 {% for index in page.paginator.page_range %} 15 {% if index == page.number %} 16 {{ index }} 17 {% else %} 18 <a href="{% url 'herolist' index %}"> {{ index }} </a> 19 {% endif %} 20 {% endfor %} 21 </body> 22 </html>