日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django--分页器(paginator)

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django--分页器(paginator) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 Django的分頁器(paginator)簡介

在頁面顯示分頁數據,需要用到Django分頁器組件

from django.core.paginator import Paginator

Paginator對象: paginator = Paginator(user_list, 10) # per_page: 每頁顯示條目數量 # count: 數據總個數 # num_pages:總頁數 # page_range:總頁數的索引范圍,如: (1,10),(1,200) # page: page對象 page對象:page=paginator.page(1) # has_next 是否有下一頁 # next_page_number 下一頁頁碼 # has_previous 是否有上一頁 # previous_page_number 上一頁頁碼 # object_list 分頁之后的數據列表 # number 當前頁 # paginator paginator對象

2 應用View層

from django.shortcuts import render,HttpResponse# Create your views here. from app01.models import * from django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerdef index(request):'''批量導入數據:Booklist=[]for i in range(100):Booklist.append(Book(title="book"+str(i),price=30+i*i))Book.objects.bulk_create(Booklist)'''''' 分頁器的使用:book_list=Book.objects.all()paginator = Paginator(book_list, 10)print("count:",paginator.count) #數據總數print("num_pages",paginator.num_pages) #總頁數print("page_range",paginator.page_range) #頁碼的列表page1=paginator.page(1) #第1頁的page對象for i in page1: #遍歷第1頁的所有數據對象print(i)print(page1.object_list) #第1頁的所有數據page2=paginator.page(2)print(page2.has_next()) #是否有下一頁print(page2.next_page_number()) #下一頁的頁碼print(page2.has_previous()) #是否有上一頁print(page2.previous_page_number()) #上一頁的頁碼# 拋錯#page=paginator.page(12) # error:EmptyPage#page=paginator.page("z") # error:PageNotAnInteger'''book_list=Book.objects.all()paginator = Paginator(book_list, 10)page = request.GET.get('page',1)currentPage=int(page)try:print(page)book_list = paginator.page(page)except PageNotAnInteger:book_list = paginator.page(1)except EmptyPage:book_list = paginator.page(paginator.num_pages)return render(request,"index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})

3 模版層 index.html

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> </head> <body><div class="container"><h4>分頁器</h4><ul>{% for book in book_list %}<li>{{ book.title }} -----{{ book.price }}</li>{% endfor %}</ul><ul class="pagination" id="pager">{% if book_list.has_previous %}<li class="previous"><a href="/index/?page={{ book_list.previous_page_number }}">上一頁</a></li>{% else %}<li class="previous disabled"><a href="#">上一頁</a></li>{% endif %}{% for num in paginator.page_range %}{% if num == currentPage %}<li class="item active"><a href="/index/?page={{ num }}">{{ num }}</a></li>{% else %}<li class="item"><a href="/index/?page={{ num }}">{{ num }}</a></li>{% endif %}{% endfor %}{% if book_list.has_next %}<li class="next"><a href="/index/?page={{ book_list.next_page_number }}">下一頁</a></li>{% else %}<li class="next disabled"><a href="#">下一頁</a></li>{% endif %}</ul> </div></body> </html>

4 擴展

'''顯示左5,右5,總共11個頁,1 如果總頁碼大于111.1 if 當前頁碼減5小于1,要生成1到12的列表(顧頭不顧尾,共11個頁碼)page_range=range(1,12)1.2 elif 當前頁碼+5大于總頁碼,生成當前頁碼減10,到當前頁碼加1的列表(顧頭不顧尾,共11個頁碼)page_range=range(paginator.num_pages-10,paginator.num_pages+1)1.3 else 生成當前頁碼-5,到當前頁碼+6的列表page_range=range(current_page_num-5,current_page_num+6)2 其它情況,生成的列表就是pageinator的page_rangepage_range=paginator.page_range'''

?

?

HTML

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css"><title>Title</title> </head> <body><ul>{% for foo in page %}<li>{{ foo.name }}</li>{% endfor %}</ul> <nav aria-label="Page navigation"><ul class="pagination">{% if page.has_previous %}<li><a href="/page_test/?page={{ page.previous_page_number }}" aria-label="Previous"><span aria-hidden="true">上一頁</span></a></li>{% else %}<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">上一頁</span></a></li>{% endif %}{% for foo in page_range %}{% if current_page == foo %}<li class="active"><a href="/page_test/?page={{ foo }}">{{ foo }}</a></li>{% else %}<li><a href="/page_test/?page={{ foo }}">{{ foo }}</a></li>{% endif %}{% endfor %}{% if page.has_next %}<li><a href="/page_test/?page={{ page.next_page_number }}" aria-label="Next"><span aria-hidden="true">下一頁</span></a></li>{% else %}<li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">下一頁</span></a></li>{% endif %}</ul> </nav></body> </html>模版

?VIEWS

def page_test(request):# book_list=[]# for i in range(100):# book=Book(name='book%s'%i,price=10+i,pub_date='2018-09-18',publish_id=1)# book_list.append(book)# Book.objects.bulk_create(book_list,10)book_list=Book.objects.all()# 生成paginator對象,傳入書籍列表,每頁10條數據paginator=Paginator(book_list,3)# 總頁碼數print(paginator.num_pages)# 頁碼列表print(paginator.page_range)# 總數據print(paginator.count)# 獲取頁面傳來的頁碼current_page=int(request.GET.get('page',1))page_range=[]# 左5 右5# 獲取頁面傳來的頁碼的page對象try:page=paginator.page(current_page)# print(page.has_next()) #是否有下一頁# print(page.next_page_number()) #下一頁的頁碼# print(page.has_previous()) #是否有上一頁# print(page.previous_page_number()) #上一頁的頁碼# 循環打印出當頁對象for i in page:print(i)except Exception as e:current_page=1page = paginator.page(1)if paginator.num_pages>11:if current_page+5>paginator.num_pages:page_range=range(paginator.num_pages-10,paginator.num_pages+1)elif current_page-5<1:page_range=range(1,12)else:page_range=range(current_page-5,current_page+6)else:page_range=paginator.page_rangereturn render(request,'page_test.html',locals())views

?

轉載于:https://www.cnblogs.com/polly-ling/p/9679327.html

總結

以上是生活随笔為你收集整理的Django--分页器(paginator)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线免费av片 | 99日韩| 精品久久久久久中文字幕 | 超碰在线视屏 | 魔女鞋交玉足榨精调教 | 97精品熟女少妇一区二区三区 | 好好热视频 | 999精品国产 | 久久久久久麻豆 | 91精产品一区观看 | 精品视频免费播放 | 亚洲午夜18毛片在线看 | 精品国产18久久久久久 | 亚洲日本黄色 | 精品人妻无码专区在线 | 尤物一区 | 91精品婷婷国产综合久久蝌蚪 | 麻豆视频国产精品 | 精品一区二区三区四区五区 | 亚洲色图首页 | 久草视频这里只有精品 | 日本做爰三级床戏 | 欧美大片免费播放器 | jiz亚洲| 巨物撞击尤物少妇呻吟 | 亚洲av成人精品午夜一区二区 | 国产免费叼嘿网站免费 | 成人国产精品免费观看动漫 | 一区二区三区美女视频 | 久久久国 | 国产一级黄色av | 天天色天天综合 | 福利在线播放 | 精品亚洲一区二区三区 | 熟女俱乐部一区二区视频在线 | 黄a在线观看 | 久久人人人 | 亚洲乱码av| 午夜性生活视频 | av网页在线观看 | 亚洲一区国产 | 国产日产精品一区二区 | 午夜免费激情视频 | 91成人破解版 | 欧美草b | a级片免费播放 | 影音先锋蜜桃 | 免费国产精品视频 | 亚洲一级黄色大片 | 日本高清网色 | 色黄大色黄女片免费中国 | 国产精品欧美久久久久天天影视 | 成人开心激情 | 这里只有精品国产 | 天天色综合天天 | 亚洲国产精品无码专区 | 校园伸入裙底揉捏1v1h | 日本a级网站 | 国产精品第100页 | 亚洲一区二区三区四区五区午夜 | hd性videos意大利精品 | 日韩av在线电影 | 干爹你真棒插曲免费 | 国产91啪| 亚洲亚洲人成综合网络 | 国产精品一区二区视频 | 色视频网站 | 日本精品入口免费视频 | 青青草99 | 日韩欧美网站 | 色插综合| 三上悠亚 在线观看 | 中文字幕精品一区二区精品 | 91蜜桃臀久久一区二区 | 亚洲欧洲国产视频 | 日本一本不卡 | 嫩草综合| 久久久婷 | 91精品国产乱码久久久久 | 乌克兰做爰xxxⅹ性视频 | 日韩电影网站 | 99精品视频在线看 | 欧美成人久久久 | 四虎影视免费看 | 性感美女福利视频 | 久草免费在线观看 | 天美视频在线观看 | 海角社区id| 精品一区二区三区免费视频 | 婷婷久久五月 | 性生活毛片 | 亚洲4p| 91人妻一区二区三区蜜臀 | 日韩免费高清一区二区 | 绿色地狱在线观看 | 色爱亚洲 | 无码熟妇αⅴ人妻又粗又大 | 朋友人妻少妇精品系列 | 草色噜噜噜av在线观看香蕉 |