国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Django中編寫模版節點及注冊標簽的方法

2020-01-04 18:01:31
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在Django中編寫模版節點及注冊標簽的方法,Django是Python各式各樣的高人氣框架中最為著名的一個,需要的朋友可以參考下

編寫模板節點

編寫自定義標簽的第二步就是定義一個擁有 render() 方法的 Node 子類。 繼續前面的例子,我們需要定義 CurrentTimeNode :

 

 
  1. import datetime 
  2.  
  3. class CurrentTimeNode(template.Node): 
  4. def __init__(self, format_string): 
  5. self.format_string = str(format_string) 
  6.  
  7. def render(self, context): 
  8. now = datetime.datetime.now() 
  9. return now.strftime(self.format_string) 

這兩個函數( __init__() 和 render() )與模板處理中的兩步(編譯與渲染)直接對應。 這樣,初始化函數僅僅需要存儲后面要用到的格式字符串,而 render() 函數才做真正的工作。

與模板過濾器一樣,這些渲染函數應該靜靜地捕獲錯誤,而不是拋出錯誤。 模板標簽只允許在編譯的時候拋出錯誤。

注冊標簽

最后,你需要用你模塊的Library 實例注冊這個標簽。 注冊自定義標簽與注冊自定義過濾器非常類似(如前文所述)。 只需實例化一個 template.Library 實例然后調用它的 tag() 方法。 例如:

register.tag('current_time', do_current_time)

tag() 方法需要兩個參數:

模板標簽的名字(字符串)。

編譯函數。

和注冊過濾器類似,也可以在Python2.4及其以上版本中使用 register.tag裝飾器:

 

 
  1. @register.tag(name="current_time"
  2. def do_current_time(parser, token): 
  3. # ... 
  4.  
  5. @register.tag 
  6. def shout(parser, token): 
  7. # ... 

如果你像在第二個例子中那樣忽略 name 參數的話,Django會使用函數名稱作為標簽名稱。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北票市| 旺苍县| 荥经县| 西昌市| 专栏| 铁力市| 邓州市| 西乌| 镇平县| 霸州市| 隆安县| 凤山市| 佛学| 濮阳县| 青河县| 惠州市| 固原市| 柳林县| 家居| 沾化县| 新乡市| 天镇县| 永新县| 延庆县| 永州市| 林甸县| 武宣县| 永清县| 新闻| 克拉玛依市| 思南县| 安西县| 澳门| 河南省| 健康| 梅州市| 额济纳旗| 南江县| 察隅县| 当涂县| 墨竹工卡县|