国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > 幫助中心 > 正文

Django實(shí)現(xiàn)基于類的分頁(yè)功能

2024-07-09 22:41:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

開發(fā)個(gè)人博客時(shí)往往避免不了分頁(yè)功能的實(shí)現(xiàn),實(shí)現(xiàn)方法大體上分為函數(shù)和類兩種。本文基于類實(shí)現(xiàn)分頁(yè)功能,以下是詳細(xì)代碼:

class Page: page_num = 0 total_count = 0 tartype = "" total_page = 0 # 總頁(yè)數(shù) per_page = 8 # 每頁(yè)顯示8篇文章 max_page = 11 # 每頁(yè)最大展示頁(yè)數(shù)選項(xiàng) half_page = max_page // 2 category = "" # 標(biāo)記該鏈接所屬分類ID,首頁(yè)默認(rèn)為空 def __init__(self, page_num, total_count, tartype, category): """ 初始化函數(shù):接收頁(yè)碼數(shù)、總數(shù)據(jù)數(shù),計(jì)算總頁(yè)碼數(shù)并過(guò)濾錯(cuò)誤頁(yè)碼數(shù)據(jù) :param page_num: 頁(yè)碼數(shù) :param total_count: 總數(shù)據(jù)數(shù) :param tartype: 分類值 :param category: 所屬分類ID """ self.page_num = page_num self.total_count = total_count self.tartype = tartype self.total_page, m = divmod(self.total_count, self.per_page) # 總頁(yè)碼數(shù),余數(shù)為m if category:  self.category = category if m:  self.total_page += 1 if self.total_page < self.max_page:  self.max_page = self.total_page  self.half_page = self.max_page // 2 # 過(guò)濾錯(cuò)誤get數(shù)據(jù) if self.page_num > self.total_page:  self.page_num = self.total_page elif self.page_num < 1:  self.page_num = 1 def data_start(self): return (self.page_num - 1) * self.per_page def data_end(self): return self.page_num * self.per_page def page_html(self): # 計(jì)算頁(yè)數(shù)選項(xiàng) page_start = self.page_num - self.half_page page_end = self.page_num + self.half_page if page_start <= 1:  page_start = 1  page_end = self.max_page if page_end >= self.total_page:  page_end = self.total_page  page_start = self.total_page - self.max_page + 1 # 計(jì)算上一頁(yè)下一頁(yè)選項(xiàng) if self.page_num == 1:  last_page = self.page_num  next_page = self.page_num + 1 else:  if self.page_num == self.total_page:  last_page = self.page_num - 1  next_page = self.page_num  else:  last_page = self.page_num - 1  next_page = self.page_num + 1 print(self.category) html_str_list = [] html_str_list.append('<li><a href="/{}/?page={}{}" >«</a></li>'.format(self.tartype, last_page, self.category)) for i in range(page_start, page_end + 1):  if i == self.page_num:  tmp = '<li><a class="active" href="/{}/?page={}{}" >{}</a></li>'.format(self.tartype, i, self.category, i)  html_str_list.append(tmp)  continue  tmp = '<li><a href="/{}/?page={}{}" >{}</a></li>'.format(self.tartype, i, self.category, i)  html_str_list.append(tmp) html_str_list.append('<li><a href="/{}/?page={}{}" >»</a></li>'.format(self.tartype, next_page, self.category)) page_html = "".join(html_str_list) return page_html

通過(guò)修改per_page、max_page控制每頁(yè)展示的文章數(shù)和分頁(yè)模塊展示的最大頁(yè)碼數(shù)。

實(shí)現(xiàn)思路:創(chuàng)建page類對(duì)象,傳入?yún)?shù)為page_num(當(dāng)前頁(yè)碼數(shù))、total_count(總文章數(shù))、tartype(分類值)、category(所屬分類ID)【注:tartpe用于區(qū)分index頁(yè)還是category頁(yè),category為查詢的分類ID,index頁(yè)時(shí)值為空。可以根據(jù)自己要實(shí)現(xiàn)的功能進(jìn)行修改】構(gòu)造函數(shù)會(huì)計(jì)算出總頁(yè)碼數(shù)并過(guò)濾掉錯(cuò)誤數(shù)據(jù)。需要實(shí)現(xiàn)某功能是直接調(diào)用類方法即可。

類方法:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 许昌县| 奉节县| 广西| 兴隆县| 平南县| 山阴县| 滨州市| 蒲城县| 新竹市| 若羌县| 郴州市| 宜丰县| 醴陵市| 奉新县| 金寨县| 拉萨市| 厦门市| 固始县| 岚皋县| 上犹县| 六盘水市| 新龙县| 遵化市| 遂溪县| 保亭| 达州市| 托里县| 桑日县| 宣武区| 吉林市| 通州市| 荣成市| 昌邑市| 博兴县| 五大连池市| 库伦旗| 绥阳县| 巴塘县| 吉林市| 颍上县| 巫山县|