丝袜av在线观看|日本美女三级片在线播放|性欧美一区二区三区|小骚热免费国产视频|黑人va在线观看|女同国产91视频|五月丁香色播Av|国产凸凹视频一区二区|伊人电影久久99|国产成人无码一区二区观看

更多過濾器

輸出變量的時(shí)候,還支持使用過濾器,來(lái)對(duì)數(shù)據(jù)進(jìn)行初級(jí)過濾,格式是:

{{obj|filter__name:param}}

比如一個(gè)變量,當(dāng)它有值的時(shí)候,就輸出當(dāng)前值,沒有值的時(shí)候,就輸出默認(rèn)值: 使用default設(shè)置默認(rèn)值:

{{ userName|default:"大俠匿名"}}

default只要是空都會(huì)認(rèn)為沒有。我們還可以使用default_if_none來(lái)進(jìn)行處理

{{ userName|default_if_none:"大俠匿名"}}
{{ ""|default_if_none:"n/a" }}
{{ nil|default_if_none:"n/a" }}

get_digit 可以獲取變量中的數(shù)字,指定get_digit的值的話,可以獲取倒數(shù)第幾個(gè)數(shù)字。如:

{{ 1234567890|get_digit:0 }}
{{ 1234567890|get_digit }}
{{ 1234567890|get_digit:2 }}
{{ 1234567890|get_digit:"4" }}
{{ 1234567890|get_digit:10 }}
{{ 1234567890|get_digit:15 }}

使用length輸出長(zhǎng)度:

{{ value|length }}

如果 value 是 ['a', 'b', 'c', 'd'],那么輸出是 4。

divisibleby 可以判斷一個(gè)變量是否可以被整除,如:

{{ 21|divisibleby:3 }}
{{ 21|divisibleby:"3" }}
{{ 21|float|divisibleby:"3" }}
{{ 22|divisibleby:"3" }}
{{ 85|divisibleby:simple.number }}
{{ 84|divisibleby:simple.number }}

date 可以格式化時(shí)間:

{{ value|date:``"2006-01-02 15:04"}}

注意,這個(gè)value必須是time.Time類型,不是時(shí)間戳,如果是時(shí)間戳它會(huì)報(bào)錯(cuò)的。時(shí)間戳要么在控制器將它轉(zhuǎn)成time.Time類型,要么就使用我們自定義的模板函數(shù):

{{stampToDate(nowStamp, "2006-01-02 15:04")}}

truncatecharstruncatewords 字符串字符、單詞多于指定的字符數(shù)量,那么會(huì)被截?cái)?。截?cái)嗟淖址畬⒁钥煞g的省略號(hào)序列(“…”)結(jié)尾:

{{ value|truncatechars:9}}
{{ value|truncatewords:9}}

截?cái)喑俗址財(cái)?code>truncatechars,還支持按單詞截?cái)?code>truncatewords

truncatechars_html、truncatewords_html 功能類似truncatecharstruncatewords。但是這這2個(gè)標(biāo)簽用來(lái)處理截取html中的字符串,它不會(huì)破壞html結(jié)構(gòu)。一個(gè)是按字符截取,一個(gè)是按單詞截取。截?cái)嗟淖址畬⒁钥煞g的省略號(hào)序列(“…”)結(jié)尾:

{{ "This is a long test which will be cutted after some chars."|truncatechars_html:25 }}
{{ "This is a long test which will be cutted after some words."|truncatewords_html:5|safe }}

upper、lower 可以對(duì)單字進(jìn)行大小寫轉(zhuǎn)換:

{{ value|upper}}
{{ value|lower}}

capfirst 可以實(shí)現(xiàn)句子首字母大寫效果,如:

{{ "hello there!"|capfirst }}

cut 可實(shí)現(xiàn)刪除變量中特定的字符。如:

{{ 15|cut:"5" }}
{{ "Hello world"|cut: " " }}

add 可以對(duì)要輸出的內(nèi)容進(jìn)行追加。相當(dāng)于golang中的+,數(shù)字則會(huì)相加后輸出結(jié)果,字符串則會(huì)拼接在一起。如:

{{ 5|add:6 }}
{{ 5|add:nothing }}
{{ 5|add:"test" }}
{{ "hello "|add:"john doe" }}

addslashes 則會(huì)在指定的預(yù)定義字符前添加反斜杠。這些字符是單引號(hào)(’)、雙引號(hào)(”)、反斜線(\)與NUL(NULL字符)。如:

{{ "plain' text"|addslashes }}
{{ "plain' text"|addslashes|safe }}

title 標(biāo)簽可以實(shí)現(xiàn)句子中每一個(gè)單詞的首字母都變成大寫,并將其余部分變成小寫,用于格式化標(biāo)題的輸出。如:

{{ "hello there!"|title }}
{{ "HELLO THERE!"|title }}
{{ "HELLO tHERE!"|title }}

yesno yesno用于驗(yàn)證一個(gè)變量是否有效,它可以定義三種結(jié)果,三種結(jié)果分別用英文逗號(hào),隔開,有效值、無(wú)效值、不知道類型。如果不定義,也可以留空。如:

{{ archive.Status|yesno}}
{{ archive.Status|yesno:"validated,not validated,unknown validation status"}}

striptags striptags 類似PHP的strip_tags函數(shù),可以剝?nèi)プ址械?HTML、XML 以及 PHP 的標(biāo)簽。該標(biāo)簽始終會(huì)剝離 HTML 注釋。如:

{{"<title>Hello World</title>"|striptags}}
{{"<title>Hello World</title>"|striptags|safe}}

removetags 標(biāo)簽可以刪除指定的html標(biāo)簽。如:

{{ "<strong><i>Hello!</i></strong>"|removetags:"i"|safe }}

pluralize 標(biāo)簽可以判斷一個(gè)變量是否是復(fù)數(shù)。如:

customer{{ 0|pluralize }}
customer{{ 1|pluralize }}
customer{{ 2|pluralize }}
cherr{{ 0|pluralize:"y,ies" }}
cherr{{ 1|pluralize:"y,ies" }}
cherr{{ 2|pluralize:"y,ies" }}
walrus{{ 0|pluralize:"es" }}
walrus{{ 1|pluralize:"es" }}
walrus{{ simple.number|pluralize:"es" }}

random 可以隨機(jī)輸出集合中的一個(gè)值。如:

<p>{{ intList|random }}</p>

firstlast 可以用于輸出變量中的最開始一個(gè)字符和最后一個(gè)字符。如:

{{ "Test"|first }}
{{ "Test"|last }}

urlencode urlencode標(biāo)簽可以對(duì)變量進(jìn)行url百分號(hào)編碼。如:

{{ "/?category_id=1"|urlencode }}

linebreaksbr、linebreaks 兩個(gè)標(biāo)簽都可以將變量的值中的換行符變成<br/>,相當(dāng)于PHP的nl2br函數(shù)。如:

{{ archive.Description|linebreaksbr }}
{{ archive.Description|linebreaks }}
{{ archive.Description|linebreaksbr|safe }}
{{ archive.Description|linebreaks|safe }}

length_is length_is可以判斷變量的值的長(zhǎng)度。只能判斷字符串,數(shù)字是不行的。如:

{{ "hello"|length_is:5 }}

integerfloat 標(biāo)簽可以將變量的值轉(zhuǎn)換成整數(shù)、浮點(diǎn)數(shù)。如:

{{ "foobar"|integer }}
{{ "5.4"|float|integer }}
{{ "foobar"|float }}
{{ "5.5"|float }}
{{ "5.6"|integer|float }}

floatformat 標(biāo)簽可以將變量的值按浮點(diǎn)數(shù)格式保留指定小數(shù)點(diǎn),默認(rèn)只保留以為,如果末位是0,則不保留小數(shù)點(diǎn)。如果指定小數(shù)點(diǎn)后位數(shù),則按指定位數(shù)顯示。如:

{{ 34.23234|floatformat }}
{{ 34.00000|floatformat }}
{{ 34.23234|floatformat:3 }}
{{ 34.00000|floatformat:3 }}
{{ "34.23234"|floatformat }}
{{ "34.00000"|floatformat }}
{{ "34.23234"|floatformat:3 }}
{{ "34.00000"|floatformat:3 }}

join 可以將一個(gè)數(shù)組按給定的分隔符合并在一起成為字符串。如:

{{intList|join:", "}}

split 剛好和join相反,它可以將一個(gè)字符串按給定的分隔符將一個(gè)字符串轉(zhuǎn)換成數(shù)組。如:

{{ "Hello, 99, 3.140000, good"|split:", "|join:", " }}

stringformat 可以將數(shù)字、字符串格式化成指定的格式輸出。相當(dāng)于fmt.Sprintf()。如:

{{ 0.55555|stringformat:"%.2f" }}
{{ 888|stringformat:"Test: %d" }}
{{ "你好"|stringformat:"Chinese: %s" }}

make_list 可以將字符串按字符拆分成數(shù)組,相當(dāng)于[]rune("你好啊")。如:

{{ "你好啊"|make_list|join:", " }}
{% for char in "你好啊"|make_list %}{{ char }},{% endfor %}

center 這個(gè)標(biāo)簽比較有意思,可以將字符串格式化成指定長(zhǎng)度,并將字符串放在中間,旁邊使用空格填充。如果給定的長(zhǎng)度小于字符串長(zhǎng)度,則不會(huì)做改變。如:

'{{ "test"|center:3 }}'
'{{ "test"|center:20 }}'
{{ "test"|center:20|length }}

ljust、rjust 這兩個(gè)標(biāo)簽和center差不多,都是給字符串填充到指定長(zhǎng)度,但是填充方向不同。ljust會(huì)在右邊填充空格,即讓字符串靠左。rjust會(huì)在左邊填充空格,即讓字符串靠右。如:

'{{ "test"|ljust:"20" }}'
{{ "test"|ljust:"20"|length }}
'{{ "test"|rjust:"20" }}'
{{ "test"|rjust:"20"|length }}

wordcount 用來(lái)統(tǒng)計(jì)字符串的長(zhǎng)度。它有2種使用方式,一種是在字符串后面,另一種是使用 filter 標(biāo)簽。如:

{{ ""|wordcount }}
{% filter wordcount %}{% lorem 25 w %}{% endfilter %}

wordwrap 可以將字符串按給定的長(zhǎng)度換行。如:

{{ "hello world"|wordwrap:2 }}
<pre>{% filter wordwrap:5 %}{% lorem 26 w %}{% endfilter %}</pre>
{{ "Lorem ipsum dolor sit amet, consectetur adipisici elit."|wordwrap:2|linebreaksbr|safe }}

urlize 會(huì)自動(dòng)給url、郵箱添加上a標(biāo)簽,并自動(dòng)增加nofollow的rel。這個(gè)用來(lái)處理文章正文比較合適。urlize還支持設(shè)置true和false,用來(lái)說明顯示的連接內(nèi)容是否轉(zhuǎn)義。如:

<p>{{ ""|urlize|safe }}</p>
<p>{{ "www.kandaoni.com"|urlize|safe }}</p>
<p>{{ "kandaoni.com"|urlize|safe }}</p>
<p>{% filter urlize:true|safe %}</p>
<p>Please mail me at demo@example.com or visit mit on:</p>
<p>- lorem ipsum http://www.kandaoni.com lorem ipsum</p>
<p>- lorem ipsum  lorem ipsum</p>
<p>- lorem ipsum  lorem ipsum</p>
<p>- lorem ipsum www.kandaoni.com lorem ipsum</p>
<p>- lorem ipsum www.kandaoni.com/test="test" lorem ipsum</p>
<p>{% endfilter %}</p>
<p>{% filter urlize:false|safe %}</p>
<p>- lorem ipsum www.kandaoni.com/test="test" lorem ipsum</p>
<p>{% endfilter %}</p>

urlizetrunc 的作用和urlize差不多,都是自動(dòng)給url、郵箱添加上a標(biāo)簽,但是可以設(shè)置截取顯示部分url內(nèi)容,超過指定長(zhǎng)度部分使用...代替。如:

<p>{% filter urlizetrunc:15|safe %}</p>
<p>Please mail me at demo@example.com or visit mit on:</p>
<p>- lorem ipsum http://www.kandaoni.com lorem ipsum</p>
<p>- lorem ipsum  lorem ipsum</p>
<p>- lorem ipsum  lorem ipsum</p>
<p>- lorem ipsum www.kandaoni.com lorem ipsum</p>
<p>- lorem ipsum www.kandaoni.com/test="test" lorem ipsum</p>
<p>{% endfilter %}</p>

escapejs 會(huì)將字符串按\uxxxx編碼預(yù)設(shè)的部分字符。如:

{{ "<p>aaa</p><script>alert('xss');</script><p>bbbb</p>"|escapejs|safe }}

slice 可以對(duì)字符串、數(shù)組進(jìn)行截取指定長(zhǎng)度的數(shù)據(jù)。如:

{{ "Test"|slice:"1:" }}
{{ "Test"|slice:":3" }}
{{ "Test"|slice:"1:3"|join:"," }}
{{ intList|slice:"1:5"|join:"," }}

safe Django的模板中會(huì)對(duì)HTML標(biāo)簽和JS等語(yǔ)法標(biāo)簽進(jìn)行自動(dòng)轉(zhuǎn)義,這樣是為了安全,防止xss攻擊。

如果不想用轉(zhuǎn)義,就使用safe來(lái)聲明要輸出的內(nèi)容是安全的,它就不會(huì)自動(dòng)轉(zhuǎn)義,也可以使用autoescape標(biāo)簽來(lái)控制開啟和關(guān)閉自動(dòng)轉(zhuǎn)義:

用safe關(guān)閉自動(dòng)轉(zhuǎn)義
{{ "<script>alert('xss');</script>"|safe}}
強(qiáng)制開啟自動(dòng)轉(zhuǎn)義
{% autoescape on %}
{{ "<script>alert('xss');</script>" }}
{% endautoescape %}
強(qiáng)制關(guān)閉自動(dòng)轉(zhuǎn)義,相當(dāng)于使用了safe
{% autoescape off %}
{{ "<script>alert('xss');</script>" }}
{% endautoescape %}

escape escape 還可以進(jìn)行聲明轉(zhuǎn)義。由于默認(rèn)已經(jīng)會(huì)自動(dòng)轉(zhuǎn)義,因此在此使用escape的話,會(huì)形成轉(zhuǎn)義2次。因此使用autoescape off關(guān)閉轉(zhuǎn)義后,再使用escape就等于直接輸出。如:

{{ "<script>alert('xss');</script>" }}
相當(dāng)于
{% autoescape off %}
{{ "<script>alert('xss');</script>"|escape }}
{% endautoescape %}

上面所有的filter 標(biāo)簽,都可以使用{% filter 標(biāo)簽名 %}內(nèi)容{% endfilter %}來(lái)使用。比如:

{% filter lower %}This is a nice test; let's see whether it works. Foobar. {{ simple.xss }}{% endfilter %}

{% filter truncatechars:10|lower|length %}This is a nice test; let's see whether it works. Foobar. {{ simple.number }}{% endfilter %}

<p>{% filter urlize:false|safe %}</p>
<p>- lorem ipsum www.kandaoni.com/test="test" lorem ipsum</p>
<p>{% endfilter %}</p>
問題反饋可加技術(shù)微信:tsrz001
目錄