1. urs.py
# coding:utf-8
from django.conf.urls import url import views urlpatterns = [ # 分页练习
url(r'^herolist/(\d*)$', views.herolist, name='herolist'),
]
注意:第9行一定是 \d* ,\d* 表示至少0个 \d+ 表示至少一个
2. models.py
# coding:utf-8
from __future__ import unicode_literals from django.db import models class HeroInfo(models.Model):
hname = models.CharField(max_length=100) # 主要展示这个字段
hgender = models.BooleanField()
isDelete= models.BooleanField(default=False) def __str__(self):
return self.hname.encode('utf-8')
3. views.py
# coding:utf-8
from django.shortcuts import render
from django.core.paginator import Paginator from models import BookInfo, HeroInfo def herolist(request, current_page):
'''分页练习'''
if not current_page:
current_page = 1
list = HeroInfo.objects.all().order_by("id") # 一定要排序
paginator = Paginator(list, 5) # 每页5条记录
page = paginator.page(int(current_page)) # 获取第一页数据,从1开始
context = {'page': page}
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>分页练习</title>
</head>
<body>
<ul>
{% for hero in page %}
<li>{{ hero.hname }}</li>
{% endfor %}
</ul>
<hr>
{% for index in page.paginator.page_range %}
{% if index == page.number %}
{{ index }}
{% else %}
<a href="{% url 'herolist' index %}"> {{ index }} </a>
{% endif %}
{% endfor %}
</body>
</html>