Django框架之分页器Paginator |
您所在的位置:网站首页 › paginator › Django框架之分页器Paginator |
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 %}
下面开始介绍Paginator的使用: 首先导入模块 from django.core.paginator import Paginatorview.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_rangerender 添加返回集 return render(req,"test.html",{"object":object,"page_range":page_range})html添加语句: {% for page_index in page_range %} |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |