国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 孟州市| 罗田县| 稷山县| 叙永县| 平遥县| 彝良县| 岳西县| 甘孜县| 康定县| 山阳县| 定襄县| 长丰县| 辉县市| 晋城| 柘城县| 友谊县| 麟游县| 洪泽县| 大兴区| 刚察县| 福建省| 昌乐县| 泰来县| 鸡东县| 江西省| 邹城市| 临夏市| 永德县| 托里县| 喜德县| 肃北| 得荣县| 长武县| 理塘县| 松阳县| 循化| 盐源县| 饶河县| 孝昌县| 横峰县| 儋州市|