flask中的過(guò)濾器

過(guò)濾器

過(guò)濾器的本質(zhì)就是函數(shù)。有時(shí)候我們不僅僅只是需要輸出變量的值擂错,我們還需要修改變量的顯示峻仇,甚至格式化、運(yùn)算等等帽芽,而在模板中是不能直接調(diào)用 Python 中的某些方法,那么這就用到了過(guò)濾器翔冀。

使用方式:

  • 過(guò)濾器的使用方式為:變量名 | 過(guò)濾器导街。
{{variable | filter_name(*args)}}
  • 如果沒(méi)有任何參數(shù)傳給過(guò)濾器,則可以把括號(hào)省略掉
{{variable | filter_name}}
  • 如:``,這個(gè)過(guò)濾器的作用:把變量variable 的值的首字母轉(zhuǎn)換為大寫纤子,其他字母轉(zhuǎn)換為小寫

鏈?zhǔn)秸{(diào)用

在 jinja2 中搬瑰,過(guò)濾器是可以支持鏈?zhǔn)秸{(diào)用的款票,示例如下:

{{ "hello world" | reverse | upper }}

常見(jiàn)內(nèi)建過(guò)濾器

字符串操作

  • safe:禁用轉(zhuǎn)義
<p>{{ '<em>hello</em>' | safe }}</p>
  • capitalize:把變量值的首字母轉(zhuǎn)成大寫,其余字母轉(zhuǎn)小寫
<p>{{ 'hello' | capitalize }}</p>
  • lower:把值轉(zhuǎn)成小寫
<p>{{ 'HELLO' | lower }}</p>
  • upper:把值轉(zhuǎn)成大寫
<p>{{ 'hello' | upper }}</p>
  • title:把值中的每個(gè)單詞的首字母都轉(zhuǎn)成大寫
<p>{{ 'hello' | title }}</p>
  • reverse:字符串反轉(zhuǎn)
<p>{{ 'olleh' | reverse }}</p>
  • format:格式化輸出
<p>{{ '%s is %d' | format('name',17) }}</p>
  • striptags:渲染之前把值中所有的HTML標(biāo)簽都刪掉
<p>{{ '<em>hello</em>' | striptags }}</p>
  • truncate: 字符串截?cái)?/li>
<p>{{ 'hello every one' | truncate(9)}}</p>

列表操作

  • first:取第一個(gè)元素
<p>{{ [1,2,3,4,5,6] | first }}</p>
  • last:取最后一個(gè)元素
<p>{{ [1,2,3,4,5,6] | last }}</p>
  • length:獲取列表長(zhǎng)度
<p>{{ [1,2,3,4,5,6] | length }}</p>
  • sum:列表求和
<p>{{ [1,2,3,4,5,6] | sum }}</p>
  • sort:列表排序
<p>{{ [6,2,3,1,5,4] | sort }}</p>

語(yǔ)句塊過(guò)濾

{% filter upper %}
    一大堆文字
{% endfilter %}

自定義過(guò)濾器

過(guò)濾器的本質(zhì)是函數(shù)泽论。當(dāng)模板內(nèi)置的過(guò)濾器不能滿足需求艾少,可以自定義過(guò)濾器。自定義過(guò)濾器有兩種實(shí)現(xiàn)方式:

  • 一種是通過(guò)Flask應(yīng)用對(duì)象的 add_template_filter 方法
  • 通過(guò)裝飾器來(lái)實(shí)現(xiàn)自定義過(guò)濾器

重要:自定義的過(guò)濾器名稱如果和內(nèi)置的過(guò)濾器重名翼悴,會(huì)覆蓋內(nèi)置的過(guò)濾器缚够。

方式一

通過(guò)調(diào)用應(yīng)用程序?qū)嵗腶dd_template_filter方法實(shí)現(xiàn)自定義過(guò)濾器。該方法第一個(gè)參數(shù)是函數(shù)名鹦赎,第二個(gè)參數(shù)是自定義的過(guò)濾器名稱:

def do_filterdoublesort(ls):
    return ls[::2]
app.add_template_filter(do_filterdoublesort,'db2')

方式二

用裝飾器來(lái)實(shí)現(xiàn)自定義過(guò)濾器潮瓶。裝飾器傳入的參數(shù)是自定義的過(guò)濾器名稱。

@app.template_filter('db2')
def do_filterdoublesort(ls):
    return ls[::-2]

模版注釋

模板中的注釋使用{# 注釋內(nèi)容 #}來(lái)定義,不會(huì)出現(xiàn)在生成的HTML中,例如:

{# 我是注釋 #}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钙姊,一起剝皮案震驚了整個(gè)濱河市毯辅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煞额,老刑警劉巖思恐,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異膊毁,居然都是意外死亡胀莹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門婚温,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)描焰,“玉大人,你說(shuō)我怎么就攤上這事栅螟【G兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵力图,是天一觀的道長(zhǎng)步绸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吃媒,這世上最難降的妖魔是什么瓤介? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮赘那,結(jié)果婚禮上刑桑,老公的妹妹穿的比我還像新娘。我一直安慰自己募舟,他們只是感情好祠斧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胃珍,像睡著了一般梁肿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上觅彰,一...
    開(kāi)封第一講書(shū)人閱讀 49,729評(píng)論 1 289
  • 那天吩蔑,我揣著相機(jī)與錄音,去河邊找鬼填抬。 笑死烛芬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飒责。 我是一名探鬼主播赘娄,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宏蛉!你這毒婦竟也來(lái)了遣臼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拾并,失蹤者是張志新(化名)和其女友劉穎揍堰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嗅义,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屏歹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了之碗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝙眶。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖褪那,靈堂內(nèi)的尸體忽然破棺而出幽纷,到底是詐尸還是另有隱情,我是刑警寧澤博敬,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布霹崎,位于F島的核電站,受9級(jí)特大地震影響冶忱,放射性物質(zhì)發(fā)生泄漏尾菇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一囚枪、第九天 我趴在偏房一處隱蔽的房頂上張望派诬。 院中可真熱鬧,春花似錦链沼、人聲如沸默赂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缆八。三九已至曲掰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奈辰,已是汗流浹背栏妖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奖恰,地道東北人吊趾。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瑟啃,于是被迫代替她去往敵國(guó)和親论泛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理蛹屿,服務(wù)發(fā)現(xiàn)屁奏,斷路器,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 過(guò)濾器用來(lái)格式化需要展示給用戶的數(shù)據(jù)错负。AngularJS有很多實(shí)用的內(nèi)置過(guò)濾器了袁,同時(shí)也提供了方便的途徑可以自己創(chuàng)建...
    oWSQo閱讀 1,088評(píng)論 0 5
  • 我們一行四人的歐洲五國(guó)游已經(jīng)到達(dá)了奧地利,今天的行程是哈爾施塔特湿颅,各種攻略早已熟記于心载绿。Hallstatt是奧地利...
    光彩奪目之大俠閱讀 463評(píng)論 0 0
  • 人生啊,到底該怎樣來(lái)過(guò)油航,到底我們存在的意義是什么崭庸? 階段性的迷茫,階段性的頓悟谊囚,階段性的手足無(wú)措怕享,階段性的躊躇滿志...
    94xiaolei閱讀 166評(píng)論 0 0
  • 曉峰思考著,如何從李關(guān)海身上套出點(diǎn)話來(lái)镰踏。 “2005年9月5日函筋,風(fēng)滿樓山莊那邊發(fā)生的那場(chǎng)車禍你還記得嗎?“曉峰問(wèn)道...
    何夕年閱讀 438評(píng)論 0 1