五:自定義標籤
一定記得要在templatetags資料夾中包含__init__.py檔案。空檔案便可。
>
django編譯乙個模板時,它將原始模板分成乙個個 節點 。每個節點都是 django.template.node 的乙個例項,並且具備 render() 方法。 於是,乙個已編譯的模板就是 節點 物件的乙個列表。 例如,看看這個模板:?1
2345
678hello, }.
be sure to come back on your birthday
for
a 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的父類,這個方法是由伺服器最先被呼叫的,然後我們得到我們...