Django内置分页扩展
生活随笔
收集整理的這篇文章主要介紹了
Django内置分页扩展
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
url文件
urlpatterns = [path('admin/', admin.site.urls),path('index1.html/', views.index1), ]?
?
views文件
from django.shortcuts import render from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger# Create your views here. USER_LIST = [] for i in range(1,999):temp = {"name":"root"+str(i),"age":i}USER_LIST.append(temp)def index(request):per_page_count = 10current_page=request.GET.get('p')current_page=int(current_page)start = (current_page - 1)*per_page_countend =current_page*per_page_countdata = USER_LIST[start:end]if current_page<=1:prve_pag = 1prve_pag = current_page -1next_pag = current_page +1return render(request,'index.html',{"users":data,"prve_page":prve_pag,"next_page":next_pag})class CustomPaginator(Paginator):def __init__(self,current_page,per_page_num,*args,**kwargs):super(CustomPaginator,self).__init__(*args,**kwargs)#當(dāng)前頁(yè)self.current_page = int(current_page)#最多顯示數(shù)量self.per_page_num = int(per_page_num)def per_num_range(self):#如果總頁(yè)數(shù)小于最多顯示數(shù)量if self.num_pages<self.per_page_num:return range(1,self.num_pages+1)part=int(self.per_page_num/2)#當(dāng)前頁(yè)小于part(頁(yè)碼從領(lǐng)開(kāi)始)if self.current_page <part:return range(1,self.per_page_num+1)#當(dāng)前頁(yè)+part大于總頁(yè)數(shù)(頁(yè)碼最后一位已經(jīng)顯示出來(lái)了)if (self.current_page+part)>self.num_pages:return range(self.num_pages - self.per_pager_num + 1, self.num_pages + 1)return range(self.current_page - part, self.current_page + part + 1)def index1(request):# 全部數(shù)據(jù):USER_LIST,=》得出共有多少條數(shù)據(jù)# per_page: 每頁(yè)顯示條目數(shù)量# count: 數(shù)據(jù)總個(gè)數(shù)# num_pages:總頁(yè)數(shù)# page_range:總頁(yè)數(shù)的索引范圍,如: (1,10),(1,200)# page: page對(duì)象(是否具有下一頁(yè);是否有上一頁(yè);)current_page=request.GET.get('p')paginator = CustomPaginator(current_page,7,USER_LIST,10)try:posts=paginator.page(current_page)# has_next 是否有下一頁(yè)# next_page_number 下一頁(yè)頁(yè)碼# has_previous 是否有上一頁(yè)# previous_page_number 上一頁(yè)頁(yè)碼# object_list 分頁(yè)之后的數(shù)據(jù)列表,已經(jīng)切片好的數(shù)據(jù)# number 當(dāng)前頁(yè)# paginator paginator對(duì)象except PageNotAnInteger:posts = paginator.page(1)except EmptyPage:posts=paginator.page((paginator.num_pages))return render(request,"index1.html",{"posts":posts})?
?
html文件
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><ul>{% for row in posts.object_list %}<li>{{ row.name }}--{{ row.age }}</li>{% endfor %} </ul>{% include 'include/pager.html' %} </body> </html>?將分頁(yè)代碼放在include,這樣分頁(yè)功能就可以重用了
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body>{% if posts.has_previous %}<a href="/index1.html?p={{ posts.previous_page_number }}">上一頁(yè)</a>{% endif %}{% for i in posts.paginator.per_num_range %}{% if i == posts.number %}<a style="font-size: 30px;" href="/index1.html?p={{ i }}">{{ i }}</a>{% else %}<a href="/index1.html?p={{ i }}">{{ i }}</a>{% endif %}{% endfor %}{% if posts.has_next%}<a href="/index1.html?p={{ posts.next_page_number }}">下一頁(yè)</a>{% endif %}<span>{{ posts.number }}/{{ posts.paginator.num_pages}}</span></body> </html>?
轉(zhuǎn)載于:https://www.cnblogs.com/lhqlhq/p/9178891.html
總結(jié)
以上是生活随笔為你收集整理的Django内置分页扩展的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flask框架----蓝图
- 下一篇: 我所理解的 Block