Django框架之分页器Paginator

您所在的位置:网站首页 paginator Django框架之分页器Paginator

Django框架之分页器Paginator

2023-09-28 07:07| 来源: 网络整理| 查看: 265

Django提供了一个非常实用的模块Paginator,可以对大量的数据进行分页处理,比原生的自行分页方式更简洁。

下面先对原生的分页方式进行一下介绍,熟悉Paginator分页器的原理:

我们可以通过在地址栏里面传参(页码和每页的最大数据量),在views.py里面get参数进行分页。

view.py内容:

def get(req): page = int(req.GET.get("page",1)) #传递参数 page 无参数时默认值为1 per_page = int(req.GET.get("per_page",5)) #传递参数 per_page 无参数时默认值为 5 news = News.objects.all()[per_page*(page-1):per_page*page] #根据已知参数对数据库数据进行切割,这里要注意对page和per_page #进行数据转换。News是我的一个表 return render(req,"test.html",{"news":news})

html内容:(body等略)

{% for foo in news %} {{ foo.tag }} {% endfor %}

在这里插入图片描述 可以看到输出第六页的数据,每页10条。(不用在意内容)

下面开始介绍Paginator的使用:

首先导入模块

from django.core.paginator import Paginator

view.py:

def get(req): page = int(req.GET.get("page",1)) per_page = int(req.GET.get("per_page",10)) news = News.objects.all() paginator = Paginator(news,per_page) #利用分页器将news切割,每个paginator含有per_page条数据 object = paginator.page(page) #paginator.page用于分页,object用于显示第几页的数据 return render(req,"test.html",{"object":object})

html:

{% for foo in object %} {{ foo.tag }} {% endfor %}

显示结果跟原生方式一样

然而我们平时所见的网页都会有页码。在Paginator中对应的是page_range 在上述view.py内添加语句

page_range = paginator.page_range

render 添加返回集

return render(req,"test.html",{"object":object,"page_range":page_range})

html添加语句:

{% for page_index in page_range %}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3