电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Django實現(xiàn)翻頁的示例代碼

瀏覽:4日期:2024-09-05 17:41:49

Django提供了翻頁器。用Django的Paginator類實現(xiàn)

一、views模塊導(dǎo)入Paginator類實現(xiàn)數(shù)據(jù)分頁

ApiTest/apiviews.py

每行都加了注釋,希望有助于理解。

from django.shortcuts import renderfrom ApiTest.models import ApiTestfrom django.contrib.auth.decorators import login_requiredfrom django.core.paginator import Paginator, EmptyPage, PageNotAnInteger, InvalidPage@login_requireddef api_test_manage(request): username = request.session.get(’user’, ’’) # 獲取所有接口測試數(shù)據(jù) apitest_list = ApiTest.objects.all().order_by(’id’) # 生成Paginator對象對數(shù)據(jù)分頁,每頁顯示10條數(shù)據(jù) paginator = Paginator(apitest_list,10) # 使用request.GET.get()函數(shù)獲取url中的page參數(shù)的數(shù)值。默認第1頁 page = request.GET.get(’page’, 1) # 把獲取的當(dāng)前頁碼數(shù)轉(zhuǎn)換成整數(shù)類型 current_page = int(page) try: # 獲取查詢頁數(shù)的接口數(shù)據(jù)列表,page()函數(shù)會判斷page實參是否是有效數(shù)字。page()函數(shù)源碼附在文章的最后apitest_list = paginator.page(page) except PageNotAnInteger:apitest_list = paginator.page(1) except (EmptyPage, InvalidPage): # paginator.num_pagesapitest_list = paginator.page(paginator.num_pages) return render(request, 'apitest_manage.html', {’user’: username, ’apitests’: apitest_list})二、將views的數(shù)據(jù)渲染到前端模板上

在對應(yīng)的html文件中加入此段代碼即可。

<div class='container'> <ul id='pager'>{# 上一頁鏈接 #}{% if apitests.has_previous %}<li class='previous'><a href='http://www.hdgsjgj.cn/apitest_manage/?page={{ apitests.previous_page_number }}' rel='external nofollow' >上一頁</a></li>{% else %}<li class='previous disabled'><a href='http://www.hdgsjgj.cn/bcjs/17009.html#' rel='external nofollow' rel='external nofollow' >上一頁</a></li>{% endif %}{# 中間數(shù)字顯示 #}{% for num in apitests.paginator.page_range %} {% if num == currentPage %}<li class='item active'><a href='http://www.hdgsjgj.cn/apitest_manage/?page={{ num }}' rel='external nofollow' rel='external nofollow' >{{ num }}</a></li> {% else %}<li class='item'><a href='http://www.hdgsjgj.cn/apitest_manage/?page={{ num }}' rel='external nofollow' rel='external nofollow' >{{ num }}</a></li> {% endif %}{% endfor %}{# 下一頁鏈接 #}{% if apitests.has_next %} {# 如果有下一頁,則正常顯示下一頁鏈接 #} <li class='next'><a href='http://www.hdgsjgj.cn/apitest_manage/?page={{ apitests.next_page_number }}' rel='external nofollow' >下一頁</a></li>{% else %} <li class='next disabled'><a href='http://www.hdgsjgj.cn/bcjs/17009.html#' rel='external nofollow' rel='external nofollow' >下一頁</a></li>{% endif %} </ul></div>三、效果展示

Django實現(xiàn)翻頁的示例代碼

四、Paginator類源碼

此類主要用在views文件

class Paginator: def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True):self.object_list = object_listself._check_object_list_is_ordered()self.per_page = int(per_page)self.orphans = int(orphans)self.allow_empty_first_page = allow_empty_first_page def validate_number(self, number):'''Validate the given 1-based page number.'''try: if isinstance(number, float) and not number.is_integer():raise ValueError number = int(number)except (TypeError, ValueError): raise PageNotAnInteger(_(’That page number is not an integer’))if number < 1: raise EmptyPage(_(’That page number is less than 1’))if number > self.num_pages: if number == 1 and self.allow_empty_first_page:pass else:raise EmptyPage(_(’That page contains no results’))return number def get_page(self, number):'''Return a valid page, even if the page argument isn’t a number or isn’tin range.'''try: number = self.validate_number(number)except PageNotAnInteger: number = 1except EmptyPage: number = self.num_pagesreturn self.page(number) def page(self, number):'''Return a Page object for the given 1-based page number.'''number = self.validate_number(number)bottom = (number - 1) * self.per_pagetop = bottom + self.per_pageif top + self.orphans >= self.count: top = self.countreturn self._get_page(self.object_list[bottom:top], number, self) def _get_page(self, *args, **kwargs):'''Return an instance of a single page.This hook can be used by subclasses to use an alternative to thestandard :cls:`Page` object.'''return Page(*args, **kwargs) @cached_property def count(self):'''Return the total number of objects, across all pages.'''c = getattr(self.object_list, ’count’, None)if callable(c) and not inspect.isbuiltin(c) and method_has_no_args(c): return c()return len(self.object_list) @cached_property def num_pages(self):'''Return the total number of pages.'''if self.count == 0 and not self.allow_empty_first_page: return 0hits = max(1, self.count - self.orphans)return ceil(hits / self.per_page) @property def page_range(self):'''Return a 1-based range of pages for iterating through withina template for loop.'''return range(1, self.num_pages + 1) def _check_object_list_is_ordered(self):'''Warn if self.object_list is unordered (typically a QuerySet).'''ordered = getattr(self.object_list, ’ordered’, None)if ordered is not None and not ordered: obj_list_repr = (’{} {}’.format(self.object_list.model, self.object_list.__class__.__name__)if hasattr(self.object_list, ’model’)else ’{!r}’.format(self.object_list) ) warnings.warn(’Pagination may yield inconsistent results with an unordered ’’object_list: {}.’.format(obj_list_repr),UnorderedObjectListWarning,stacklevel=3 )五、Page類源碼

此類主要用在html文件

class Page(collections.abc.Sequence): def __init__(self, object_list, number, paginator):self.object_list = object_listself.number = numberself.paginator = paginator def __repr__(self):return ’<Page %s of %s>’ % (self.number, self.paginator.num_pages) def __len__(self):return len(self.object_list) def __getitem__(self, index):if not isinstance(index, (int, slice)): raise TypeError(’Page indices must be integers or slices, not %s.’% type(index).__name__ )# The object_list is converted to a list so that if it was a QuerySet# it won’t be a database hit per __getitem__.if not isinstance(self.object_list, list): self.object_list = list(self.object_list)return self.object_list[index] def has_next(self):return self.number < self.paginator.num_pages def has_previous(self):return self.number > 1 def has_other_pages(self):return self.has_previous() or self.has_next() def next_page_number(self):return self.paginator.validate_number(self.number + 1) def previous_page_number(self):return self.paginator.validate_number(self.number - 1) def start_index(self):'''Return the 1-based index of the first object on this page,relative to total objects in the paginator.'''# Special case, return zero if no items.if self.paginator.count == 0: return 0return (self.paginator.per_page * (self.number - 1)) + 1 def end_index(self):'''Return the 1-based index of the last object on this page,relative to total objects found (hits).'''# Special case for the last page because there can be orphans.if self.number == self.paginator.num_pages: return self.paginator.countreturn self.number * self.paginator.per_page

到此這篇關(guān)于Django實現(xiàn)翻頁的示例代碼的文章就介紹到這了,更多相關(guān)Django 翻頁內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Django
相關(guān)文章:
主站蜘蛛池模板: 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 盘装氧量分析仪-防爆壁挂氧化锆分析仪-安徽吉帆仪表有限公司 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 井式炉-台车式回火炉-丹阳市电炉厂有限公司 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 北京租车牌|京牌指标租赁|小客车指标出租| 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 水轮机密封网 | 水轮机密封产品研发生产厂家| 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 江苏大隆凯科技有限公司| 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | 技德应用| 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格| 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 深圳公司注册-工商注册公司-千百顺代理记账公司 |