本篇文章為大家展示了使用Django怎么實現(xiàn)分頁功能,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)專注于碾子山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供碾子山營銷型網(wǎng)站建設(shè),碾子山網(wǎng)站制作、碾子山網(wǎng)頁設(shè)計、碾子山網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造碾子山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供碾子山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。Django提供了一個新的類來幫助你管理分頁數(shù)據(jù),這個類存放在django/core/paginator.py
.它可以接收列表、元組或其它可迭代的對象。
class Paginator(object): def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True): self.object_list = object_list self.per_page = int(per_page) self.orphans = int(orphans) self.allow_empty_first_page = allow_empty_first_page ……
基本語法實例
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import os from django.core.paginator import Paginator objects = ['john','paul','george','ringo','lucy','meiry','checy','wind','flow','rain']<br> p = Paginator(objects,3) # 3條數(shù)據(jù)為一頁,實例化分頁對象 print p.count # 10 對象總共10個元素 print p.num_pages # 4 對象可分4頁 print p.page_range # xrange(1, 5) 對象頁的可迭代范圍 page1 = p.page(1) # 取對象的第一分頁對象 print page1.object_list # 第一分頁對象的元素列表['john', 'paul', 'george'] print page1.number # 第一分頁對象的當前頁值 1 page2 = p.page(2) # 取對象的第二分頁對象 print page2.object_list # 第二分頁對象的元素列表 ['ringo', 'lucy', 'meiry'] print page2.number # 第二分頁對象的當前頁碼值 2 print page1.has_previous() # 第一分頁對象是否有前一頁 False print page1.has_other_pages() # 第一分頁對象是否有其它頁 True print page2.has_previous() # 第二分頁對象是否有前一頁 True print page2.has_next() # 第二分頁對象是否有下一頁 True print page2.next_page_number() # 第二分頁對象下一頁碼的值 3 print page2.previous_page_number() # 第二分頁對象的上一頁碼值 1 print page2.start_index() # 第二分頁對象的元素開始索引 4 print page2.end_index() # 第2分頁對象的元素結(jié)束索引 6
官方解釋在視圖中的應(yīng)用
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import render def listing(request): contact_list = Contacts.objects.all() paginator = Paginator(contact_list, 25) # Show 25 contacts per page page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render(request, 'list.html', {'contacts': contacts})
在template的html模板中的應(yīng)用
{% for contact in contacts %} {# Each "contact" is a Contact model object. #} {{ contact.full_name|upper }}<br /> ... {% endfor %} <div class="pagination"> <span class="step-links"> {% if contacts.has_previous %} <a href="?page={{ contacts.previous_page_number }}">previous</a> {% endif %} <span class="current"> Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}. </span> {% if contacts.has_next %} <a href="?page={{ contacts.next_page_number }}">next</a> {% endif %} </span> </div>
舉例講述分頁功能的使用目的說明
現(xiàn)要實現(xiàn)如下功能
1、網(wǎng)頁上顯示分頁數(shù)據(jù),3條數(shù)據(jù)為一頁
2、有分頁導(dǎo)航功能,被選中頁高亮顯示
3、如果沒有上一頁或下一頁,則不出現(xiàn)箭頭導(dǎo)航
4、如果最后一頁的數(shù)據(jù)少于2條,合并到上一頁
效果圖
圖1:
圖2:
視圖定義
定義templates
分頁功能優(yōu)化
目標:
1、在template中的html模板中使用自定義函數(shù)
2、不管有多少分頁,頁面上最多顯示5頁
基礎(chǔ)知識
Django的模板語言包含了各種各樣的內(nèi)置標簽和過濾器來滿足你的應(yīng)用需求,不過有時候你也會發(fā)現(xiàn)你的需要的功能不在內(nèi)置的功能中,這時候你可以通過Python語言自定義標簽和過濾器來擴展模板引擎,然后在你的模板中使用{% load %}來加載使用它們。
在你的app下創(chuàng)建templatetags包,在其下創(chuàng)建python腳本來定義你的標簽和過濾器,如:
polls/ __init__.py models.py templatetags/ __init__.py poll_extras.py views.py
然后在你的模板中使用
{% load poll_extras %}
項目實戰(zhàn)
自定義過濾器和標簽
在模板中引用
上述內(nèi)容就是使用Django怎么實現(xiàn)分頁功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁題目:使用Django怎么實現(xiàn)分頁功能-創(chuàng)新互聯(lián)
分享鏈接:http://m.rwnh.cn/article6/dsdeog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司、手機網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容