flask框架下的jinja2模板引擎(2)(過濾器與自定義過濾器)

flask框架下的jinja2模塊引擎(1):http://www.javashuo.com/article/p-hfvsbwpn-bm.htmlhtml

這篇論文主要用來記錄下 jinja2 的過濾器。python

  • 什麼是過濾器?

過濾器的本質就是函數。有時候咱們不單單只是須要輸出變量的值,咱們還須要修改變量的顯示,甚至格式化、運算等等,而在模板中是不能直接調用 Python 中的某些方法,那麼這就用到了過濾器。flask

 

  • 過濾器的使用方式

使用方式:api

  • 過濾器的使用方式爲:變量名 | 過濾器。
{{variable | filter_name(*args)}}
  • 若是沒有任何參數傳給過濾器,則能夠把括號省略掉
{{variable | filter_name}}
  • 在 jinja2 中,過濾器是能夠支持鏈式調用的。
{{ "hello world" | reverse | upper }}

 

  • 經常使用的內建過濾器

1.字符串操做

  • safe:禁用轉義
<p>{{ '<em>hello</em>' | safe }}</p>
  • capitalize:把變量值的首字母轉成大寫,其他字母轉小寫
<p>{{ 'hello' | capitalize }}</p>
  • lower:把值轉成小寫
<p>{{ 'HELLO' | lower }}</p>
  • upper:把值轉成大寫
<p>{{ 'hello' | upper }}</p>
  • title:把值中的每一個單詞的首字母都轉成大寫
<p>{{ 'hello' | title }}</p>
  • reverse:字符串反轉
<p>{{ 'olleh' | reverse }}</p>
  • format:格式化輸出
<p>{{ '%s is %d' | format('name',17) }}</p>
  • striptags:渲染以前把值中全部的HTML標籤都刪掉
<p>{{ '<em>hello</em>' | striptags }}</p>
  • truncate: 字符串截斷
<p>{{ 'hello every one' | truncate(9)}}</p>

2.列表操做

  • first:取第一個元素
<p>{{ [1,2,3,4,5,6] | first }}</p>
  • last:取最後一個元素
<p>{{ [1,2,3,4,5,6] | last }}</p>
  • length:獲取列表長度
<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>

 

  • 自定義過濾器

例如建立一個能夠讓列表反轉的過濾器app

1.方法一

def do_listreverse(li):
    li.reverse()
    return li
app.add_template_filter(do_listreverse,"listreverse")    #listreverse是過濾器的名稱

2.方法二(最經常使用這種

@app.template_filter("listreverse")
def do_listreverse(li):
    li.reverse()
    return li
相關文章
相關標籤/搜索