自定義標籤

2022-09-07 03:06:12 字數 1821 閱讀 3150

五:自定義標籤

一定記得要在templatetags資料夾中包含__init__.py檔案。空檔案便可。

>

django編譯乙個模板時,它將原始模板分成乙個個 節點 。每個節點都是 django.template.node 的乙個例項,並且具備 render() 方法。 於是,乙個已編譯的模板就是 節點 物件的乙個列表。 例如,看看這個模板:?1

2345

678hello, }.

be sure to come back on your birthday

fora splendid surprise message.

被編譯的模板表現為節點列表的形式:

當你呼叫乙個已編譯模板的 render() 方法時,模板就會用給定的context來呼叫每個在它的節點列表上的所有節點的 render() 方法。 這些渲染的結果合併起來,形成了模板的輸出。 因此,要自定義模板標籤,你需要指明原始模板標籤如何轉換成節點(編譯函式)和節點的render()方法完成的功能 。

>

這個要在templatetags裡面進行定義

upper.py

//class

uppernode

(template

.node

): 繼承template.node類

def

__init__

(self

,nodelist

):

self

.nodelist

=nodelist

def

render

(self

,context

): 呼叫render處理方法

content

=self

.nodelist

.render

(context

) 用render處理context

return

content

.lower

() 將作用與節點當中的內容,不僅僅是變數

def

upper

(parser

,token

):第乙個引數是模板內容,第二個引數是引數列表

nodelist

=parser

.parse

("endupper"

) 取節點當中的內容

parse

.delete_first_token

() 刪除第乙個引數,因為第乙個引數是自己的名字upper

renturn

uppernode

(nodelist

) 傳遞到uppernode當中

還需要註冊一下

在html當中使用upper標籤的時候要先load進來

來自為知筆記(wiz)

自定義標籤

由於字典的緣故,當前表中資料存的是字典表的code,所以在頁面顯示的時候需要再次進行轉換。於是我就想到了用標籤來解決這個問題。1.建立自己的標籤 public class displaytag extends tagsupport override public int doendtag throw...

自定義標籤

1 前段時間由於系統需要使用到資料字典,簡而言之就是用下拉將字典的內容顯示出來。我也是參考了一下別人的例項結合自己的業務需求,才將此功能實現。在此將大楷實現步奏記錄下來,以方便以後翻閱。2 在我們專案中使用了2張表來實現此功能。a csms t baseinfo 字典名稱 b csms t base...

自定義標籤

1 建立沒有標籤體的標籤 1 首先建立乙個jva類,去繼承 tagsupport,下面我們說一下 tagsupport 中的方法的作用 void setjspcontext jspcontext pc 這個方法中的引數就是pagecontext的父類,這個方法是由伺服器最先被呼叫的,然後我們得到我們...