在django中使用自定義標籤實現分頁功能

2023-03-19 01:45:36 字數 2397 閱讀 7418

效果演示:

github地址:

本例中總頁數為30頁,顯示頁數為12頁,當前頁的前排頁數為4,後排頁數為5

將分頁分為三種情況:

1   當前頁為第1頁到第7頁的時候,無省略頁,且12個位置的內容是不變

2  當前頁為第8頁到第25頁時,位置1與位置2內容不變,當前頁一直處於位置7,

3  當前頁為第25頁到第30頁時,位置1與位置2內容不變,位置8到位置12的內容不變,當前頁在位置8到位置12之中變換

自定義標籤**:

from django import template

register = template.library()

@register.assignment_tag

def pagination(current_page,paginator,num_of_displaypages=10,num_of_backpages=4):

# www.cppcns.comcurrent_page is a django.core.paginator.page 's instance

# paginator is a django.core.paginator.paginator 's instance

# num_of_frontpages = num_of_displaypages - num_of_backpages -3

html=''

# 當總頁數小於等於 顯示頁數 時,則將總頁數全部顯示

if paginator.num_pages <= num_of_displaypages :

for i in range(1,paginator.num_pages+1):

html+= '

'%(i,i)

return html

# 第一種情況

elif current_page.number <= num_of_displaypages-num_of_backpages:

for i in range(1,num_of_displaypages+1):

html+= ''%(i,i)

return html

# 第二種情況

elif num_of_displaypages-num_of_frontpages <= current_page.number <= paginator.num_pages-num_of_backpages :

html = '''

來看html**

title

} }

看看view函式:

from django.shortcuts import render

from django.core.paginator import paginator, emptypage, pagenotaninteger

# create your views here.

def index(request):

obj_list = ['page01','page02','page03','page04'betbn,'page05','page06','page07','page08','page09','page10',

'page11www.cppcns.com','page12','page13','page14','page15','page16','page17','page18','page19','page20',

'page21','page22','page23','page24','page25','page26','page27','page28','page29','page30',]

#create a paginator instance

paginator = paginator(obj_list,1)

#get the page_number of current page

current_page_num = request.get.get('page')

try:

current_page = paginator.page(current_page_num)

except pagenotaninteger:

# if page is not an integer, deliver first page.

current_page = paginator.page(1)

except emptypage:

# if page is out of range (e.g. 9999), deliver last page of results.

current_page = paginator.page(paginator.num_pages)

return render(request,'index.html',

)本文標題: 在django中使用自定義標籤實現分頁功能

本文地址:

Django自定義標籤

自定義標籤頁是寫在自定義過濾器的檔案下 第一種寫法 register.tag def mytime formatstring return datetime.now strftime formatstring 第二種寫法,註冊標籤時使用takes context 引數,則可以使用從上下文中傳入的引數...

Django 模板中使用if標籤進行資料比較問題

最近發現之前寫一個程式存在一個問題,和大家分享下 需求 將檢視中的資料根據如下條件在網頁上顯示不同的顏色 30,60 藍色 0,30 紅色 60,100 綠色 之前的程式片段 color green color red color blue 可以基本實現對不同範圍的資料顯示不同的顏色。但後面發現,對...

4 1自定義標籤使用

很多情況下,我們需要為系統提供可配置化的支援,簡單的做法可以直接基於spring的標準bean來配置,但是配置較為複雜或者需要更多豐富控制的時候,會顯得笨拙。此時spring提供了可拓展的支援,拓展spring自定義標籤大致需要一下幾個步驟 1 建立一個pojo,用來接收配置檔案 package u...

Django 3種自定義模板標籤

django有許多內建的模板標籤 template tags 比如 如果這些模板標籤不能滿足您的需要,你也可以自己定義模板標籤.django提供了以下幫助函式 functions 來允許你以一種簡單的方式建立自己的模板標籤 template tags 在其下任意建立一個py檔案,比如叫text1.p...

django模板中使用自定義的模板標籤

一 模板標籤目錄結構 首先在我們的 blog 應用下建立一個 templatetags 包。之後在 templatetags 目錄下建立一個 blog tags.py 檔案,這個檔案存放自定義的模板標籤 此時你的目錄結構應該是這樣的 blog init py admin.py migrations ...

在自定義類中使用CView指標遇到的問題

1 之前在cview類中直接載入了資料庫,並顯示,今天想著把這部分功能拿出來,單獨寫一個類實現,但是遇到了些問題 由於這部分功能中需要動態建立cstatic 物件,那麼就需要cview類控制代碼 csuperlabel mm new csuperlabel mm create t my static...

自定義標籤的使用

20111109學習總結 1 帶屬性的自定義標籤 1 控制標籤體迴圈輸出指定次數 在標籤處理類中新增屬性變數及其setter方法 private int times public void dotag throws jspexception,ioexception else if page.star...

Spring自定義標籤使用

1 首先我們建立一個普通的pojo,這個pojo沒有任何特別之處,只是用來接收配置檔案。package test.customtag public class user public void setusername string username public string getemail pu...

strtus2自定義標籤使用

今天在專案框架中合入的自定義的防重標籤,主要分為以下幾步 1.定義標籤類 需要繼承tagsupport 重寫doendtag方法 這邊需要注意的是pagecontext.getout write 就是在頁面輸出html語言,其實我只是在頁面放了個隱藏域,把隨機生成數做為值而已 public clas...

Django自定義模板標籤和過濾器

from django import template register template.library register library 呼叫library物件的inclusion tag 裝飾器方法建立並註冊inclusion標籤 register.inclusion tag stark fo...