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

首頁 > 網站 > 幫助中心 > 正文

Django實現基于類的分頁功能

2024-07-09 22:41:44
字體:
來源:轉載
供稿:網友

開發個人博客時往往避免不了分頁功能的實現,實現方法大體上分為函數和類兩種。本文基于類實現分頁功能,以下是詳細代碼:

class Page: page_num = 0 total_count = 0 tartype = "" total_page = 0 # 總頁數 per_page = 8 # 每頁顯示8篇文章 max_page = 11 # 每頁最大展示頁數選項 half_page = max_page // 2 category = "" # 標記該鏈接所屬分類ID,首頁默認為空 def __init__(self, page_num, total_count, tartype, category): """ 初始化函數:接收頁碼數、總數據數,計算總頁碼數并過濾錯誤頁碼數據 :param page_num: 頁碼數 :param total_count: 總數據數 :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) # 總頁碼數,余數為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 # 過濾錯誤get數據 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): # 計算頁數選項 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 # 計算上一頁下一頁選項 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

通過修改per_page、max_page控制每頁展示的文章數和分頁模塊展示的最大頁碼數。

實現思路:創建page類對象,傳入參數為page_num(當前頁碼數)、total_count(總文章數)、tartype(分類值)、category(所屬分類ID)【注:tartpe用于區分index頁還是category頁,category為查詢的分類ID,index頁時值為空。可以根據自己要實現的功能進行修改】構造函數會計算出總頁碼數并過濾掉錯誤數據。需要實現某功能是直接調用類方法即可。

類方法:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 个旧市| 海盐县| 沂源县| 剑阁县| 邵武市| 西丰县| 贺州市| 宜良县| 额敏县| 察隅县| 蒙阴县| 渭南市| 秦皇岛市| 湄潭县| 怀仁县| 贡嘎县| 丹东市| 义马市| 梧州市| 汕头市| 胶州市| 阿拉善右旗| 三河市| 孟连| 潍坊市| 杂多县| 丹江口市| 宝应县| 华宁县| 富裕县| 德安县| 策勒县| 兴山县| 宁津县| 垫江县| 南陵县| 岳阳县| 庄河市| 岳西县| 古丈县| 财经|