Django--Pagination


文:鄭元春

人生苦短啸如,我用Python!

分頁用處很大续担,基本隨便哪個網(wǎng)站都會有用到分頁量瓜,從產品列表到喲過戶評論,只要是一頁放不下并且數(shù)量很多的情況下就需要 用到分頁了柿赊。通過分頁可以很好的組織你的數(shù)據(jù)展示形式俩功。

這里先說一個不用任何插件或者是框架,直接能夠應用到所有服務器軟件的分頁方法碰声,并且使用的是Ajax的方式绑雄,能夠讓用戶在不用刷新頁面的情況下進行操作,還能添加一些很酷的動畫或者是數(shù)據(jù)展示奥邮,當然那不屬于分頁的事情万牺。好了,進入正題:

  • Ajax 分頁

你需要編寫一個分頁的數(shù)據(jù)API洽腺,返回的是json或者是jsonp的數(shù)據(jù)格式脚粟,json是個數(shù)據(jù)交換標準和XML一樣,都是為了便攜的交換數(shù)據(jù)蘸朋『宋蓿可以寫成下面的url來獲取你的ajax data,目的是為了將頁面index傳回到服務器中藕坯。
dataUrl=baseurl/api/get/***?page=2
這里有個base url团南,是你服務器的基礎地址噪沙,后面的api/get/是為了從邏輯上更好的區(qū)分你的url功能,這里可以隨你的喜好和命名習慣來編寫吐根,一般的服務器軟件都有路由映射功能正歼,將你的url映射到后方的服務器處理函數(shù)上去。再后面的***就是不同的服務器支持的后綴了(比如jsp拷橘,asp等后綴名)局义。最后的?page=2則是將需要獲取的頁面數(shù)據(jù)返回的頁數(shù)。這是通過在url添加參數(shù)的形式傳遞參數(shù)值冗疮,如果你的數(shù)據(jù)中有敏感數(shù)據(jù)的話萄唇,還可以選擇post方式傳遞數(shù)據(jù)。

后臺的服務器通過路由的方式調用你的邏輯函數(shù)來處理數(shù)據(jù)术幔,下面的偽代碼將會告訴你怎么獲取數(shù)據(jù)另萤。

function getPageData(.....)
    pageIndex=request.getParameter("page")
    itemCount=DB.query(Object).count()
    itemPerPage=10    /*每一頁的項目數(shù)*/
    pageCount=itemCount/itemPerPage
    itemStartIndex=(pageIndex-1)*itemPerPage
    itemEndIndex=pageIndex*itemPerPage
    queryData=DB.query(Object)[itemStartIndex:itemEndIndex]
    data={
        "status":"success",
        "pagenum":pageCount,
        "curpagenum":pageIndex,
        "data":queryData,
    }
    retun json(data)

除了上面簡要的偽代碼之外,你必須還要做些邊界處理诅挑,看你的下標和上標是否超過了數(shù)據(jù)集范圍四敞。
在頁面上直接使用JQuery的ajax函數(shù)就可以了。

$.ajax({
type:"get",
dataType:"json",
url:url:上面提到的那個url揍障,后面的page可以看你點擊的是頁面中哪個按鈕,
success:function(data){
    if(data['status'] === 'success'){
        //給頁面動態(tài)添加信息
    }
});
  • Django的分頁

Django提供了一個分頁器類`Paginator(django.core.paginator.Paginator)目养,可以很容易的實現(xiàn)分頁的功能俩由。該類有兩個構造參數(shù)毒嫡,一個是數(shù)據(jù)的集合,另一個是每頁放多少條數(shù)據(jù)幻梯。Paginator的基本使用如下:

#現(xiàn)在我們有下面的數(shù)據(jù)需要分頁兜畸,一共有6個數(shù)據(jù),每頁需要顯示2個
objects=['Amy','John','Lily','Lucy','Micky','Nancy']
from django.core.paginator import Paginator
p=Paginator(objects,2)

#下面的屬性很有幫助
p.count  #數(shù)據(jù)總數(shù) 6
p.num_pages #總頁數(shù) 3
p.page_range #頁碼列表 [1,2,3]

#獲取頁面
p1=p.page(1)
p1.object_list
['Amy','John']
p2=p.page(2)
p3=p.page(3)

#每一頁判斷是否有前頁或是后頁或是其它頁
p1.has_previous()
p1.has_next()
p1.has_other_pages()
#前一頁和后一頁的頁碼
p1.previous_page_number()
p1.next_page_number()

#每一頁開始的element序數(shù)碘梢,最后記錄的序數(shù)
p1.start_index()
p2.end_index()

這樣就不用處理邊界問題咬摇,同時在模板中也能夠很好的進行數(shù)據(jù)的輸出,所有的數(shù)據(jù)或是屬性提供的數(shù)據(jù)已經(jīng)足夠在頁面中做好分頁了煞躬。


總結:

分頁是剛需肛鹏,Django將給了我們更便利的使用方式,需要的代碼不超過5行就能做出分頁功能恩沛,當然使用Django的分頁你既可以做出Ajax的形式也能做成每次訪問的形式在扰。好了,簡單的分頁系統(tǒng)就講解到這里了雷客,快應用到你的項目中吧芒珠!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搅裙,隨后出現(xiàn)的幾起案子皱卓,更是在濱河造成了極大的恐慌裹芝,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娜汁,死亡現(xiàn)場離奇詭異嫂易,居然都是意外死亡,警方通過查閱死者的電腦和手機存炮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門炬搭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人穆桂,你說我怎么就攤上這事宫盔。” “怎么了享完?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵灼芭,是天一觀的道長。 經(jīng)常有香客問我般又,道長彼绷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任茴迁,我火速辦了婚禮寄悯,結果婚禮上,老公的妹妹穿的比我還像新娘堕义。我一直安慰自己猜旬,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布倦卖。 她就那樣靜靜地躺著洒擦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪怕膛。 梳的紋絲不亂的頭發(fā)上熟嫩,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音褐捻,去河邊找鬼掸茅。 笑死,一個胖子當著我的面吹牛柠逞,可吹牛的內容都是我干的昧狮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼边苹,長吁一口氣:“原來是場噩夢啊……” “哼陵且!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤慕购,失蹤者是張志新(化名)和其女友劉穎聊疲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沪悲,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡获洲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了殿如。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贡珊。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涉馁,靈堂內的尸體忽然破棺而出门岔,到底是詐尸還是另有隱情,我是刑警寧澤烤送,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布寒随,位于F島的核電站,受9級特大地震影響帮坚,放射性物質發(fā)生泄漏妻往。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一试和、第九天 我趴在偏房一處隱蔽的房頂上張望讯泣。 院中可真熱鬧,春花似錦阅悍、人聲如沸好渠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晦墙。三九已至悦昵,卻和暖如春肴茄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背但指。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工寡痰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棋凳。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓拦坠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剩岳。 傳聞我的和親對象是個殘疾皇子贞滨,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容