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

首頁 > 編程 > Python > 正文

Django自定義分頁效果

2020-02-16 01:46:16
字體:
來源:轉載
供稿:網友

分頁功能在每個網站都是必要的,對于分頁來說,其實就是根據用戶的輸入計算出應該顯示在頁面上的數據在數據庫表中的起始位置。

確定分頁需求:

1. 每頁顯示的數據條數
2. 每頁顯示頁號鏈接數
3. 上一頁和下一頁
4. 首頁和末頁

效果圖:

首先,利用django內置的分頁功能,寫分頁類:

from django.core.paginator import Paginator, Page  # 導入django分頁模塊class PageInfo(object): def __init__(self, current_page, all_count, base_url, per_page=10, show_page=11):  """  :param current_page: 當前頁  :param all_count: 總頁數  :param base_url: 模板  :param per_page: 每頁顯示數據條數  :param show_page: 顯示鏈接頁個數  """  #若url錯誤,默認顯示第一頁(錯誤類型可能為:空頁面編號,非整數型頁面編號)  try:   self.current_page = int(current_page)  except Exception as e:   self.current_page = 1    #根據數據庫信息條數得出總頁數     a, b = divmod(all_count, per_page)  if b:   a += 1  self.all_page = a     self.base_url = base_url  self.per_page = per_page  self.show_page = show_page #當前頁起始數據id def start_data(self):    return (self.current_page - 1) * self.per_page #當前頁結束數據id def end_data(self):    return self.current_page * self.per_page  #動態生成前端html def pager(self):  page_list = []  half = int((self.show_page - 1)/2)  #如果:總頁數 < show_page,默認顯示頁數范圍為: 1~總頁數  if self.all_page < self.show_page:   start_page = 1   end_page = self.all_page + 1  #如果:總頁數 > show_page  else:   #如果:current_page - half <= 0,默認顯示頁數范圍為:1~show_page   if self.current_page <= half:    start_page = 1    end_page = self.show_page + 1   else:    #如果:current_page + half >總頁數,默認顯示頁數范圍為:總頁數 - show_page ~ 總頁數    if self.current_page + half > self.all_page:     end_page = self.all_page + 1     start_page = end_page - self.show_page    else:     start_page = self.current_page - half     end_page = self.current_page + half + 1  #首頁  first_page = "<li><a href='%s?page=%s'>首頁</a></li>" %(self.base_url, 1)  page_list.append(first_page)  #上一頁(若當前頁等于第一頁,則上一頁無鏈接,否則鏈接為當前頁減1)  if self.current_page <= 1:   prev_page = "<li><a href='#'>上一頁</a></li>"  else:   prev_page = "<li><a href='%s?page=%s'>上一頁</a></li>" %(self.base_url, self.current_page-1)  page_list.append(prev_page)  #動態生成中間頁數鏈接  for i in range(start_page, end_page):   if i == self.current_page:    temp = "<li class='active'><a href='%s?page=%s'>%s</a></li>" %(self.base_url, i, i)   else:    temp = "<li><a href='%s?page=%s'>%s</a></li>" % (self.base_url, i, i)   page_list.append(temp)  #下一頁(若當前頁等于最后頁,則下一頁無鏈接,否則鏈接為當前頁加1)  if self.current_page >= self.all_page:   next_page = "<li><a href='#'>下一頁</a></li>"  else:   next_page = "<li><a href='%s?page=%s'>下一頁</a></li>" %(self.base_url, self.current_page+1)  page_list.append(next_page)  #末頁(若總頁數只有一頁,則無末頁標簽)  if self.all_page > 1:   last_page = "<li><a href='%s?page=%s'>末頁</a></li>" % (self.base_url, self.all_page)   page_list.append(last_page)  return ''.join(page_list)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安陆市| 义乌市| 沾益县| 通渭县| 甘孜县| 剑河县| 和平区| 天水市| 汪清县| 和硕县| 雷波县| 旅游| 柳州市| 秦皇岛市| 皮山县| 平乡县| 苍山县| 宁明县| 宝兴县| 永仁县| 贺兰县| 邻水| 临清市| 清水县| 锡林郭勒盟| 德令哈市| 南昌县| 乌拉特中旗| 大丰市| 隆昌县| 榆社县| 瑞昌市| 横峰县| 玛纳斯县| 洮南市| 繁昌县| 万山特区| 宽甸| 资源县| 涪陵区| 翁牛特旗|