views視圖
def student(request):
????# all_count 數(shù)據(jù)庫總個(gè)數(shù)
????????all_count = models.UserInfo.objects.all().count()
????????#每頁顯示數(shù)據(jù)數(shù)
????????page_info? = PageInfo(request.GET.get('page'),all_count,10,'student.html',11)? ?//'student.html? 配置url
? ??????user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()]#傳入數(shù)據(jù)
????return render(request,'student.html',{'user_list':user_list,'page_info':page_info})
關(guān)鍵模板來了:
class PageInfo(object):
def __init__(self,current_page,all_count,per_page,base_url,show_page=11):
#current_page當(dāng)前頁
? ? ? ? self.current_page = current_page
try:
self.current_page =int (current_page)
except Exception as e:
self.current_page =1
? ? ? ? #per_page 每頁顯示總個(gè)數(shù)
? ? ? ? self.per_page = per_page
a,b=divmod(all_count,per_page)
if b:
a=a+1
? ? ? ? self.all_pager = a
self.show_page = show_page
self.base_url = base_url
def start(self):
return (self.current_page -1)*self.per_page
def end(self):
return self.current_page *self.per_page
def pager(self):
page_list=[]
harf =int((self.show_page-1)/2)
#如果數(shù)據(jù)總頁數(shù) < 11
? ? ? ? if self.all_pager
begin =1
? ? ? ? ? ? stop =self.all_pager+1
? ? ? ? ? ? # 如果數(shù)據(jù)總頁數(shù) > 11
? ? ? ? else:
#如果當(dāng)前頁<=5,永遠(yuǎn)顯示1-11頁
? ? ? ? ? ? if self.current_page <= harf:
begin =1
? ? ? ? ? ? ? ? stop =self.show_page+1
? ? ? ? ? ? ? ? # 否則當(dāng)前頁>5,永遠(yuǎn)顯示中間頁
? ? ? ? ? ? else:
# 如果當(dāng)前頁+5大于所有數(shù)據(jù)頁數(shù),永遠(yuǎn)顯示最后一頁
? ? ? ? ? ? ? ? if self.current_page + harf>self.all_pager:
begin =self.all_pager -self.show_page+1
? ? ? ? ? ? ? ? ? ? stop =self.all_pager +1
? ? ? ? ? ? ? ? else:
begin =self.current_page - harf
stop =self.current_page+harf+1
?if self.current_page <=1:
prev ="<li><a href='#'>上一頁</a></li>"
? else:
prev ="<li><a href='%s?page=%s'>上一頁</a></li>" %(self.base_url,self.current_page-1,)
page_list.append(prev)
? ? ? ? for iin range(begin,stop):
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)
if self.current_page >=self.all_pager:
nex ="<li><a href='#'>下一頁</a></li>"
else:
nex ="<li><a href='%s?page=%s'>下一頁</a></li>" % (self.base_url,self.current_page +1,)
page_list.append(nex)
return ''.join(page_list)