国产探花免费观看_亚洲丰满少妇自慰呻吟_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會使用函數名稱作為標簽名稱。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 密山市| 沙河市| 岑溪市| 东莞市| 平阴县| 阳原县| 竹山县| 黄梅县| 木里| 乌兰察布市| 陆河县| 平昌县| 双桥区| 平阳县| 沿河| 阿克陶县| 常宁市| 涞源县| 湘潭市| 南溪县| 黔江区| 天门市| 武陟县| 大足县| 泗水县| 陆川县| 池州市| 松桃| 夏邑县| 思茅市| 溧阳市| 杭锦后旗| 乐平市| 永清县| 沙洋县| 中宁县| 什邡市| 滨州市| 贵定县| 闽清县| 岚皋县|