最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

class Page:
 page_num = 0
 total_count = 0
 tartype = ""
 total_page = 0 # 總頁數(shù)
 per_page = 8 # 每頁顯示8篇文章
 max_page = 11 # 每頁最大展示頁數(shù)選項(xiàng)
 half_page = max_page // 2
 category = "" # 標(biāo)記該鏈接所屬分類ID,首頁默認(rèn)為空

 def __init__(self, page_num, total_count, tartype, category):
 """
 初始化函數(shù):接收頁碼數(shù)、總數(shù)據(jù)數(shù),計(jì)算總頁碼數(shù)并過濾錯(cuò)誤頁碼數(shù)據(jù)
 :param page_num: 頁碼數(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) # 總頁碼數(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ì)算頁數(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ì)算上一頁下一頁選項(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控制每頁展示的文章數(shù)和分頁模塊展示的最大頁碼數(shù)。

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

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

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

文章較少時(shí):

文章較多時(shí):

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

相關(guān)文章

  • Python 語句的表達(dá)式和縮進(jìn)

    Python 語句的表達(dá)式和縮進(jìn)

    本篇文章將會(huì)使大家了解Python 語句、表達(dá)式以及它們之間的區(qū)別。還包含幾個(gè)示例來更清楚地解釋這個(gè)概念。接下來,我們將解釋如何在 Python 編程中使用多行語句和縮進(jìn),需要的朋友可以參考一下
    2021-09-09
  • Python基于locals返回作用域字典

    Python基于locals返回作用域字典

    這篇文章主要介紹了Python基于locals返回作用域字典,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python高級(jí)架構(gòu)模式知識(shí)點(diǎn)總結(jié)

    Python高級(jí)架構(gòu)模式知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于Python高級(jí)架構(gòu)模式知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-08-08
  • python是怎么被發(fā)明的

    python是怎么被發(fā)明的

    在本篇文章里小編給大家分享的是關(guān)于python的由來等相關(guān)內(nèi)容,有興趣的朋友們學(xué)習(xí)參考下。
    2020-06-06
  • Python實(shí)現(xiàn)DBSCAN聚類算法并樣例測試

    Python實(shí)現(xiàn)DBSCAN聚類算法并樣例測試

    聚類是一種機(jī)器學(xué)習(xí)技術(shù),它涉及到數(shù)據(jù)點(diǎn)的分組,聚類是一種無監(jiān)督學(xué)習(xí)的方法,是許多領(lǐng)域中常用的統(tǒng)計(jì)數(shù)據(jù)分析技術(shù)。本文給大家分享Python實(shí)現(xiàn)DBSCAN聚類算法并樣例測試,感興趣的朋友一起看看吧
    2021-06-06
  • 對Python 2.7 pandas 中的read_excel詳解

    對Python 2.7 pandas 中的read_excel詳解

    今天小編就為大家分享一篇對Python 2.7 pandas 中的read_excel詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 基于Python實(shí)現(xiàn)在線加密解密網(wǎng)站系統(tǒng)

    基于Python實(shí)現(xiàn)在線加密解密網(wǎng)站系統(tǒng)

    在這個(gè)數(shù)字化時(shí)代,數(shù)據(jù)的安全和隱私變得越來越重要,所以本文小編就來帶大家實(shí)現(xiàn)一個(gè)簡單但功能強(qiáng)大的加密解密系統(tǒng),并深入探討它是如何工作的,有興趣的可以了解下
    2023-09-09
  • python主要用于哪些方向

    python主要用于哪些方向

    在本篇文章里小編給大家整理了一篇關(guān)于python用于的方向的相關(guān)文章,有需要的閱讀下吧。
    2020-07-07
  • python增加矩陣維度的實(shí)例講解

    python增加矩陣維度的實(shí)例講解

    下面小編就為大家分享一篇python增加矩陣維度的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • matplotlib繪制折線圖的基本配置(萬能模板案例)

    matplotlib繪制折線圖的基本配置(萬能模板案例)

    折線圖可以很方便的看出數(shù)據(jù)的對比,本文主要介紹了matplotlib繪制折線圖的基本配置(萬能模板案例),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論

通海县| 穆棱市| 通道| 正宁县| 嘉禾县| 张掖市| 芜湖市| 雷波县| 山丹县| 湟源县| 佳木斯市| 贵阳市| 延川县| 子洲县| 浮山县| 阿荣旗| 手游| 翼城县| 南宫市| 营山县| 九江县| 东台市| 罗平县| 东至县| 图片| 泸水县| 东宁县| 冕宁县| 本溪市| 崇阳县| 银川市| 定南县| 辽宁省| 芦山县| 洛隆县| 定兴县| 将乐县| 郯城县| 福贡县| 榆中县| 固安县|