在Django中編寫模版節(jié)點及注冊標(biāo)簽的方法
編寫模板節(jié)點
編寫自定義標(biāo)簽的第二步就是定義一個擁有 render() 方法的 Node 子類。 繼續(xù)前面的例子,我們需要定義 CurrentTimeNode :
import datetime class CurrentTimeNode(template.Node): def __init__(self, format_string): self.format_string = str(format_string) def render(self, context): now = datetime.datetime.now() return now.strftime(self.format_string)
這兩個函數(shù)( __init__() 和 render() )與模板處理中的兩步(編譯與渲染)直接對應(yīng)。 這樣,初始化函數(shù)僅僅需要存儲后面要用到的格式字符串,而 render() 函數(shù)才做真正的工作。
與模板過濾器一樣,這些渲染函數(shù)應(yīng)該靜靜地捕獲錯誤,而不是拋出錯誤。 模板標(biāo)簽只允許在編譯的時候拋出錯誤。
注冊標(biāo)簽
最后,你需要用你模塊的Library 實例注冊這個標(biāo)簽。 注冊自定義標(biāo)簽與注冊自定義過濾器非常類似(如前文所述)。 只需實例化一個 template.Library 實例然后調(diào)用它的 tag() 方法。 例如:
register.tag('current_time', do_current_time)
tag() 方法需要兩個參數(shù):
- 模板標(biāo)簽的名字(字符串)。
- 編譯函數(shù)。
和注冊過濾器類似,也可以在Python2.4及其以上版本中使用 register.tag裝飾器:
@register.tag(name="current_time") def do_current_time(parser, token): # ... @register.tag def shout(parser, token): # ...
如果你像在第二個例子中那樣忽略 name 參數(shù)的話,Django會使用函數(shù)名稱作為標(biāo)簽名稱。
- 淺談Django自定義模板標(biāo)簽template_tags的用處
- 詳解Django項目中模板標(biāo)簽及模板的繼承與引用(網(wǎng)站中快速布置廣告)
- Django框架模板語言實例小結(jié)【變量,標(biāo)簽,過濾器,繼承,html轉(zhuǎn)義】
- Django模板繼承 extend標(biāo)簽實例代碼詳解
- 剖析Django中模版標(biāo)簽的解析與參數(shù)傳遞
- Django中模版的子目錄與include標(biāo)簽的使用方法
- Python的Django框架中自定義模版標(biāo)簽的示例
- 在django中使用自定義標(biāo)簽實現(xiàn)分頁功能
- django框架自定義模板標(biāo)簽(template tag)操作示例
相關(guān)文章
Python開發(fā)時報TypeError:?‘int‘?object?is?not?iterable錯誤的解決方
Python寫循環(huán)程序的時候遇到TypeError:'int'object is not iterable,所以下面這篇文章主要給大家介紹了關(guān)于Python開發(fā)時報TypeError:'int'?object?is?not?iterable錯誤的解決方式,需要的朋友可以參考下2022-06-06Python中關(guān)于matplotlib圖片的灰度處理方式
這篇文章主要介紹了Python中關(guān)于matplotlib圖片的灰度處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08使用Python?Cupy模塊加速大規(guī)模數(shù)值計算實例深究
Cupy是一個基于NumPy的庫,專門設(shè)計用于在GPU上進(jìn)行高性能計算,它提供了與NumPy相似的API,因此用戶可以很容易地將現(xiàn)有的NumPy代碼遷移到Cupy上,從而充分利用GPU的并行計算能力2023-12-12Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題實例詳解
這篇文章主要介紹了Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題,結(jié)合實例形式詳細(xì)分析了Python使用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題的相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下2019-07-07