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. 展示
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法