麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Perl > 正文

Django框架中自定義模板過濾器的實現方法

2020-02-23 19:46:19
字體:
來源:轉載
供稿:網友

Django框架模板的過濾和標注是為了實現Django框架模板文件中的一些功能,而Django框架附帶了許多模板過濾器和標記,本文將為大家帶來Django框架中自定義模板過濾器的實現方法。

自定義過濾器就是有一個或兩個參數的Python函數:

  • ??? (輸入)變量的值
  • ??? 參數的值, 可以是默認值或者完全留空

例如,在過濾器 {{ var|foo:"bar" }} 中 ,過濾器 foo 會被傳入變量 var 和默認參數 bar。

過濾器函數應該總有返回值。 而且不能觸發異常,它們都應該靜靜地失敗。 如果出現錯誤,應該返回一個原始輸入或者空字符串,這會更有意義。

這里是一些定義過濾器的例子:

def cut(value, arg):  "Removes all values of arg from the given string"  return value.replace(arg, '')

下面是一個可以用來去掉變量值空格的過濾器例子:

{{ somevariable|cut:" " }}

大多數過濾器并不需要參數。 下面的例子把參數從你的函數中拿掉了:

def lower(value): # Only one argument.  "Converts a string into all lowercase"  return value.lower()

當你定義完過濾器后,你需要用 Library 實例來注冊它,這樣就能通過Django的模板語言來使用了:

register.filter('cut', cut)register.filter('lower', lower)

Library.filter() 方法需要兩個參數:

  • ??? 過濾器的名稱(一個字串)
  • ??? 過濾器函數本身

如果你使用的是Python 2.4或者更新的版本,你可以使用裝飾器register.filter():

@register.filter(name='cut')def cut(value, arg):  return value.replace(arg, '')@register.filterdef lower(value):  return value.lower()

如果你想第二個例子那樣不使用 name 參數,那么Django會把函數名當作過濾器的名字。

下面是一個完整的模板庫的例子,它包含一個 cut 過濾器:

from django import templateregister = template.Library()@register.filter(name='cut')def cut(value, arg):  return value.replace(arg, '')綜上所述是武林技術頻道小編和大家分享的Django框架中自定義模板過濾器的實現方法,希望對想要了解這方面信息的人有所幫助。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产毛片在线 | 欧美性色大片 | 国产精品9191| 天天看夜夜爽 | 一级黄色影片在线观看 | 青热久思思 | 草草视频在线 | 精品国产一区二区三区久久久蜜 | 中文字幕电影免费播放 | 国产一区二区视频观看 | 久草手机在线 | 激情大乳女做爰办公室韩国 | 欧美性激情视频 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 久久国产一二区 | 成人男女啪啪免费观看网站四虎 | 日韩精品一区二区三区中文 | 国产精品99久久久久久久 | 久久凹凸 | 免费一级a毛片免费观看 | www.91视频com| 日本在线不卡一区二区 | 美国av在线免费观看 | 国产91在线播放九色 | 一区二区久久久久草草 | 草莓视频久久 | 91综合影院| 欧美性成人 | 国产精品久久久在线观看 | 一区二区三高清 | 亚洲网站免费看 | 草草视频在线 | 国产精品野外av久久久 | 亚洲网站一区 | 日本精品一区二区 | 亚洲第一成人在线 | 草久免费 | 久国久产久精永久网页 | 一级国产精品一级国产精品片 | 国产色片 | 色999中文字幕 |