一、知识点
参考:https://docs.djangoproject.com/zh-hans/3.0/topics/pagination/
查询出所有省级地区的信息,显示在页面上。
AeroInfo.objects.filter(aParent__isnull = True)
1) 查询出所有省级地区的信息。
2) 按每页显示10条信息进行分页,默认显示第一页的信息,下面并显示出页码。
3) 点击i页链接的时候,就显示第i页的省级地区信息。
from django.core.paginator import Paginator
paginator = Paginator(areas, 10)
Paginator类对象的属性:
属性名 |
说明 |
num_pages |
返回分页之后的总页数 |
page_range |
返回分页后页码的列表 |
Paginator类对象的方法:
方法名 |
说明 |
page(self, number) |
返回第number页的Page类实例对象 |
Page类对象的属性:
属性名 |
说明 |
number |
返回当前页的页码 |
object_list |
返回包含当前页的数据的查询集 |
paginator |
返回对应的Paginator类对象 |
Page类对象的方法:
属性名 |
说明 |
has_previous |
判断当前页是否有前一页 |
has_next |
判断当前页是否有下一页 |
previous_page_number |
返回前一页的页码 |
next_page_number |
返回下一页的页码 |
二、分页实例
1)app1/models.py写地区模型类
from django.db import models
class AreaInfo(models.Model):
'''地址模型类'''
atitle = models.CharField(verbose_name='标题', max_length=20)
aParent = models.ForeignKey('self', null=True, blank=True,on_delete=models.CASCADE)
def __str__(self):
return self.atitle
def title(self):
return self.atitle
title.admin_order_field = 'atitle'
title.short_description = '地区名称'
def parent(self):
if self.aParent is None:
return ''
return self.aParent.atitle
parent.short_description = '父级地区名称'
2)app1/views.py写显示函数
from django.shortcuts import render
from django.http import HttpResponse
from app1.models import AreaInfo
def index(request):
return render(request,'app1/index.html')
from django.core.paginator import Paginator
def show_areas(request):
'''分页显示地区'''
areas=AreaInfo.objects.filter(aParent__isnull=True)
paginator=Paginator(areas,10)
page=paginator.page(1)
return render(request,'app1/show_areas.html',{'page':page})
3)模板templates/app1/show_areas.html
<!DOCTYPE html>
<html>
<head>
<title>显示地区</title>
</head>
<body>
<ul>
{% for a in page %}
<li>{{a.atitle}}</li>
{% endfor %}
</ul>
</body>
</html>
4)配置urls.py
from django.contrib import admin
from django.urls import path
from app1 import views
urlpatterns = [
path('index/', views.index),
path('show_upload/',views.show_upload),
path('upload_handle/',views.upload_handle),
path('show_areas/',views.show_areas),
]
显示第一页十条数据:
北京市
天津市
河北省
山西省
内蒙古自治区
辽宁省
吉林省
黑龙江省
上海市
江苏省
2.2完整的分布实例
1)模板templates/app1/show_areas.html
<!DOCTYPE html>
<html>
<head>
<title>显示地区</title>
</head>
<body>
<ul>
{
{
{% for area in page %}
<li>{{ area.atitle }}</li>
{% endfor %}
</ul>
{
{% if page.has_previous %}
<a href="/show_areas{{ page.previous_page_number }}"><上一页</a>
{% endif %}
{
{% for pindex in page.paginator.page_range %}
{
{% if pindex == page.number %}
{{ pindex }}
{% else %}
<a href="/show_areas{{ pindex }}">{{ pindex }}</a>
{% endif %}
{% endfor %}
{
{% if page.has_next %}
<a href="/show_areas{{ page.next_page_number }}">下一页></a>
{% endif %}
</ul>
</body>
</html>
2)app1/views.py
from django.shortcuts import render
from django.http import HttpResponse
from project1.settings import MEDIA_ROOT
from app1.models import PicTest,AreaInfo
def index(request):
return render(request,'app1/index.html')
from django.core.paginator import Paginator
def show_areas(request,pindex):
'''分页显示地区'''
areas = AreaInfo.objects.filter(aParent__isnull=True)
paginator = Paginator(areas, 10)
if pindex == '':
pindex = 1
else:
pindex = int(pindex)
page = paginator.page(pindex)
return render(request,'app1/show_areas.html',{'page':page})
3)配置urls.py
from django.contrib import admin
from django.urls import path,re_path
from app1 import views
urlpatterns = [
path('index/', views.index),
path('show_upload/',views.show_upload),
path('upload_handle/',views.upload_handle),
re_path(r'show_areas(?P<pindex>\d*)', views.show_areas),
]


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现