先說一下自行實現分頁是如何進行的
然後是關於django自帶的分頁內容,這裡主要集中了兩個類,分別是paginator、page
paginator可以通過內建的page方法生成page物件,反之page類也可以這樣操作
from下面說一下django存在的不足,我們常見的翻頁中都應該如下圖django.shortcuts import render
from
django.core.paginator import paginator, emptypage, pagenotaninteger
l =for i in range(999
):def index(request):
current_page = request.get.get('p'
) paginator = paginator(l, 10
) # per_page: 每頁顯示條目數量
# count: 資料總個數
# num_pages:總頁數
# page_range:總頁數的索引範圍,如: (
1,10),(1,200
) # page: page物件
try:
posts =paginator.page(current_page)
# object_list 分頁之後的資料列表
# number 當前頁
# paginator paginator物件
except pagenotaninteger:
posts = paginator.page(1
) except emptypage:
posts =paginator.page(paginator.num_pages)
return render(request, '
index.html
', )
views.py
下面我們需要對paginator進行一定的修改,所以我們可以重新寫乙個類,繼承paginator所有的方法,再增加新的方法用於實現顯示數字的功能
class然後是對應的前端custompaginator(paginator):
def __init__(self,current_page,per_page_num,*args,**kwargs):
# 當年頁碼
self.current_page = int
(current_page)
# 最多顯示頁碼的個數
self.per_page_num = int
(per_page_num)
super(custompaginator,self).__init__(*args,**kwargs)
def pager_num_range(self):
# self.num_pages 表示總共有多少頁
# 情況1:當總頁數小於我們要顯示的頁碼個數
if self.num_pages
return range(1,self.num_pages+1
) part = int(self.per_page_num/2
) # 情況2:我們需要顯示10個頁碼,但是此時當前頁為第2頁,依舊顯示1-10
if self.current_page<=part:
return range(1,self.per_page_num+1
) # 情況3:我們需要顯示10個頁碼,共有20頁,但是此時當前頁為第18頁,依舊顯示11-20
if (self.current_page+part)>self.num_pages:
return range(self.num_pages-self.per_page_num,self.num_pages+1
) # 情況4:正常的中間情況
return range(self.current_page-part,self.current_page+part+1)
"en以上就是關於分頁的所有內容。">
"/index1.html?p=}
#}
"font-size: 20px
" href="
/index1.html?p=}
">}
"/index1.html?p=}
">}
"/index1.html?p=}
}/}
django第11天 分頁器
批量插入資料 book list 先生成物件 for i in range 100 book book name book s i,price 10 i 操作物件列表,設定一次操作多少條資料 book.objects.bulk create book list,10 1.匯入分頁器模組 from d...
python第25天 學習python第25天
今天是在尚學堂學習python第25天今天學習了使用者管理,許可權管理 使用者管理 1.使用者的登入與退出 語法 mysql h hostname p port u username p dbname e h hostname 指定要連線mysql的主機名或者ip hostname就是具體的主機名或...
python學習第7天
崔鑫陽 2019.225 課堂檢測題 輸入兩個數 求出他們之間所有的素數 把這些素數放在 乙個列表裡 求這個列表裡素數的和 以及 最大值 和最小值 寫到乙個 裡 num 1 int input 輸入第乙個數 num 2 int input 輸入第二個數 if num 1 num 2 turn num...