欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年10月31日 15:41:31   作者:︶舉個(gè)栗子彡  
這篇文章主要為大家詳細(xì)介紹了Django實(shí)現(xiàn)基于類的分頁(yè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

開發(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ù)并過濾錯(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
 # 過濾錯(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

通過修改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ù)并過濾掉錯(cuò)誤數(shù)據(jù)。需要實(shí)現(xiàn)某功能是直接調(diào)用類方法即可。

類方法:data_start()計(jì)算出當(dāng)前頁(yè)的文章的起始索引值
data_end()計(jì)算出當(dāng)前頁(yè)的文章的起始索引值
page_html()返回分頁(yè)模塊的html代碼,可直接render到前端。

實(shí)現(xiàn)效果:

文章較少時(shí):

文章較多時(shí):

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django框架安裝方法圖文詳解

    Django框架安裝方法圖文詳解

    這篇文章主要介紹了Django框架安裝方法,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Django框架的下載、安裝簡(jiǎn)單使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • 在Flask使用TensorFlow的幾個(gè)常見錯(cuò)誤及解決

    在Flask使用TensorFlow的幾個(gè)常見錯(cuò)誤及解決

    這篇文章主要介紹了在Flask使用TensorFlow的幾個(gè)常見錯(cuò)誤及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實(shí)現(xiàn)

    numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實(shí)現(xiàn)

    這篇文章主要介紹了numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • PyTorch中torch.utils.data.Dataset的介紹與實(shí)戰(zhàn)

    PyTorch中torch.utils.data.Dataset的介紹與實(shí)戰(zhàn)

    PyTorch是一個(gè)開源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于PyTorch中torch.utils.data.Dataset的介紹與實(shí)戰(zhàn),需要的朋友可以參考下
    2022-06-06
  • 詳解python之協(xié)程gevent模塊

    詳解python之協(xié)程gevent模塊

    這篇文章主要介紹了詳解python之協(xié)程gevent模塊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-06-06
  • python批量賦值操作實(shí)例

    python批量賦值操作實(shí)例

    今天小編就為大家分享一篇python批量賦值操作實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-10-10
  • python實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕功能

    python實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕功能

    這篇文章主要介紹了python如何實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF

    python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF

    我們學(xué)習(xí)編程,在學(xué)習(xí)的時(shí)候,會(huì)有想把有用的知識(shí)點(diǎn)保存下來(lái),我們可以把知識(shí)點(diǎn)的內(nèi)容爬下來(lái)轉(zhuǎn)變成pdf格式,方便我們拿手機(jī)可以閑時(shí)翻看,是很方便的,本文就介紹一下如何實(shí)現(xiàn)
    2021-06-06
  • OpenCV半小時(shí)掌握基本操作之對(duì)象測(cè)量

    OpenCV半小時(shí)掌握基本操作之對(duì)象測(cè)量

    這篇文章主要介紹了OpenCV基本操作之對(duì)象測(cè)量,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配

    python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配

    這篇文章主要為大家詳細(xì)介紹了python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論