django自帶的分頁不能設(shè)置樣式
def domen(request): # for i in range(101): # models.DataInfo.objects.create(name="root_%s"%i,phone=11111)#獲取url中cur_page的參數(shù) cur_page=request.GET.get('cur_page') cur_page=int(cur_page) data_list=models.DataInfo.objects.all() from django.core.paginator import Paginator paginatos=Paginator(data_list,10) # per_page: 每頁顯示條目數(shù)量 # count: 數(shù)據(jù)總個數(shù) # num_pages:總頁數(shù) # page_range:總頁數(shù)的索引范圍,如: (1,10),(1,200) # page: page對象 # res=paginatos.count # res=paginatos.num_pages # res=paginatos.page_range # res=paginatos.page(2).number users=paginatos.page(cur_page) # has_next 是否有下一頁 # next_page_number 下一頁頁碼 # has_previous 是否有上一頁 # previous_page_number 上一頁頁碼 # object_list 分頁之后的數(shù)據(jù)列表 # number 當(dāng)前頁 # paginator paginator對象 return render(request,'domen.html',{"users":users})
<div class="box"> <ul> {% for user in users %} <li> {{ user.name }} {% endfor %} </li> </ul>{#獲取上一頁#}{% if users.has_previous %} <a href="/domen/?cur_page={{ users.previous_page_number }}">上一頁</a>{% endif %}{#獲取頁碼#}{% for num in users.paginator.page_range %} <a href="/domen/?cur_page={{ num }}">{{ num }}</a>{% endfor %}{#獲取下一頁#}{% if users.has_next %} <a href="/domen/?cur_page={{ users.next_page_number }}">下一頁</a>{% endif %}</div>
class PageInfo: '''頁數(shù)處理類''' #total 總的數(shù)據(jù)為列表套對象 #cur_page 前端發(fā)過來的當(dāng)前頁碼 #per_page 一頁展示的數(shù)據(jù)的條數(shù) #show_page 顯示頁面下端頁碼顯示的數(shù)目 def __init__(self,total,cur_page,per_page=10,show_page=11): a,b=divmod(total,per_page) if b!=0: a =1 self.total=total self.cur_page=cur_page self.per_page=per_page self.show_page=show_page self.total_page_num=a #獲取數(shù)據(jù)庫查詢的起始位置 self.start = (cur_page - 1) * per_page #獲取數(shù)據(jù)庫的結(jié)束位置 self.end = self.start per_page #獲取當(dāng)前頁起始數(shù)據(jù)的位置 def get_start_num(self): return self.start #獲取數(shù)據(jù)庫結(jié)束數(shù)據(jù)的位置 def get_end_num(self): return self.end def get_page(self): #獲得距離當(dāng)前頁的數(shù)量,用于展示頁數(shù)多少 step=self.show_page//2 #展示頁起始點 begin=self.cur_page-step off = self.cur_page step #判斷開始頁是否小于0等于0,或小于等于0,開始開始頁始終設(shè)置為1 if begin<=0: begin=1 #判斷最后的幾頁是否還湊步數(shù) elif self.total_page_num-self.cur_page<=step: off=self.total_page_num #判斷若總的頁數(shù)小于需要展示的頁數(shù) if self.total_page_num<self.show_page: off=self.total_page_num lis=[] #判斷當(dāng)前頁是否為第一頁,若為第一次就不能點擊上一頁 if self.cur_page-1<=0: str="<li><a href='#'><span aria-hidden='true'>«</span></a></li>" else: str="<li><a href='/index/?cur_page=%s' aria-label='Previous'><span aria-hidden='true'>«</span></a></li>"%(self.cur_page-1) lis.append(str) #遍歷獲取頁數(shù)標(biāo)簽 for index in range(begin,off 1): if self.cur_page==index: str="<li><a href='/index/?cur_page=%s' style='background:blue;color:white;'>%s</a></li>"%(index,index) else: str="<li><a href='/index/?cur_page=%s'>%s</a></li>"%(index,index) lis.append(str) if self.cur_page>=self.total_page_num: str="<li><a href='#'><span aria-hidden='true'>»</span></a></li>" else: str="<li><a href='/index/?cur_page=%s' aria-label='Previous'><span aria-hidden='true'>»</span></a></li>"%(self.cur_page 1) lis.append(str) s=" ".join(lis) return s
class IndexPage(View): '''分頁模型類''' def get(self,request): #獲取當(dāng)前頁這里是字符創(chuàng)格式 cur_page=request.GET.get('cur_page') #將字符創(chuàng)格式的cur_page轉(zhuǎn)化成數(shù)字類型 cur_page=int(cur_page) # total=models.DataInfo.objects.all()[0:10] #獲取數(shù)據(jù)庫數(shù)據(jù)總數(shù)量 total=models.DataInfo.objects.filter(id__lt=40).count() #實例化頁數(shù)處理類的對象 page_obj=PageInfo(total,cur_page) start=page_obj.get_start_num() end=page_obj.get_end_num() #對數(shù)據(jù)庫查出的數(shù)據(jù)進(jìn)行切片 users=models.DataInfo.objects.all()[start:end] s=page_obj.get_page() return render(request,'index.html',{"user_lis":users,"page":s})
<link rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><style> .page{ text-align: center; }</style><table class="table-bordered table"> <p class="btn btn-primary">歡迎光臨</p> <thead> <tr> <th>ID</th> <th>姓名</th> <th>電話</th> </tr> </thead> <tbody> {% for user in user_lis %} <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.phone }}</td> </tr> {% endfor %} </tbody></table><div class="page"> <nav aria-label="Page navigation"> <ul class="pagination"> {{ page | safe }} </ul> </nav> </div>
來源:https://www.icode9.com/content-4-392701.html