Django 之 分页

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>
复制代码

 

5. 展示

 

posted on   刘[小]倩  阅读(2658)  评论(0编辑  收藏  举报

编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示