Django模板語言,過濾器整理


## Django模板語言,過濾器整理

#### 1. add

**{{ value|add:"2" }}**

把add后的參數加給value;

處理時,過濾器首先會強制把兩個值轉換成Int類型。 如果強制轉換失敗, 它會試圖使用各種方式吧兩個值相加。

> 實例:
>
> {{ arg|add:val }}
>
> 1)arg是5,val是3,將會輸出8
>
> 2)arg是5,val是'3',將會輸出8
>
> 3)arg是'jason',val是'2',將會輸出jason2
>
> 4)arg是'jason',val是2,將會輸出空
>
> 5)arg是[1, 2, 3],val是[4],將會輸出[1, 2, 3, 4]



#### 2. addslashes

{{ value|addslashes }}

在引號前面加上斜桿

像這樣:

如果`value` 是 `"I'm using Django"`, 輸出將變成 `"I\'m using Django"`



#### 3. capfirst

{{ value|capfirst}}

將變量的第一個字母變成大寫,如果第一個字符不是字母,則過濾器不生效

如果 `"value"` 是 `"django"`, 輸出將變成 `Django`。



#### 4. center

{{ value|center:16}}

使"value"在給定的寬度范圍內居中。



#### 5. cut

移除value中所有的與給出的變量相同的字符串

{{ value|cut:" "}}

如果`value`為`“String with spaces”`,輸出將為`"Stringwithspaces"`。



#### 6. date

根據給定格式對一個date變量格式化

可用的格式字符串:

| 格式化字符 | 描述 | 示例輸出 |
| ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| a | `'a.m.'`或`'p.m.'`(請注意,這與PHP的輸出略有不同,因為這包括符合Associated Press風格的期間) | `'a.m.'` |
| A | `'AM'`或`'PM'`。 | `'AM'` |
| b | 月,文字,3個字母,小寫。 | `'jan'` |
| B | 未實現。 | |
| c | ISO 8601格式。 (注意:與其他格式化程序不同,例如“Z”,“O”或“r”,如果值為naive datetime,則“c”格式化程序不會添加時區偏移量(請參閱[`datetime.tzinfo`](https://docs.python.org/3/library/datetime.html#datetime.tzinfo)) 。 | `2008-01-02T10:30:00.000123+02:00`或`2008-01-02T10:30:00.000123`如果datetime是天真的 |
| d | 月的日子,帶前導零的2位數字。 | `'01'`到`'31'` |
| D | 一周中的文字,3個字母。 | `“星期五”` |
| e | 時區名稱 可能是任何格式,或者可能返回一個空字符串,具體取決於datetime。 | `''`、`'GMT'`、`'-500'`、`'US/Eastern'`等 |
| E | 月份,特定地區的替代表示通常用於長日期表示。 | `'listopada'`(對於波蘭語區域,而不是`'Listopad'`) |
| f | 時間,在12小時的小時和分鍾內,如果它們為零,則分鍾停留。 專有擴展。 | `'1'`,`'1:30'` |
| F | 月,文,長。 | `'一月'` |
| g | 小時,12小時格式,無前導零。 | `'1'`到`'12'` |
| G | 小時,24小時格式,無前導零。 | `'0'`到`'23'` |
| h | 小時,12小時格式。 | `'01'`到`'12'` |
| H | 小時,24小時格式。 | `'00'`到`'23'` |
| i | 分鍾。 | `'00'`到`'59'` |
| I | 夏令時間,無論是否生效。 | `'1'`或`'0'` |
| j | 沒有前導零的月份的日子。 | `'1'`到`'31'` |
| l | 星期幾,文字長。 | `'星期五'` |
| L | 布爾值是否是一個閏年。 | `True`或`False` |
| m | 月,2位數字帶前導零。 | `'01'`到`'12'` |
| M | 月,文字,3個字母。 | `“揚”` |
| n | 月無前導零。 | `'1'`到`'12'` |
| N | 美聯社風格的月份縮寫。 專有擴展。 | `'Jan.'`,`'Feb.'`,`'March'`,`'May'` |
| o | ISO-8601周編號,對應於使用閏年的ISO-8601周數(W)。 對於更常見的年份格式,請參見Y。 | `'1999年'` |
| O | 與格林威治時間的差異在幾小時內。 | `'+0200'` |
| P | 時間為12小時,分鍾和'a.m。'/'p.m。',如果為零,分鍾停留,特殊情況下的字符串“午夜”和“中午”。 專有擴展。 | `'1 am'`,`'1:30 pm' / t3>,'midnight','noon','12:30 pm' / T10>` |
| r | [**RFC 5322**](https://tools.ietf.org/html/rfc5322.html)格式化日期。 | `'Thu, 21 Dec 2000 16:01:07 +0200'` |
| s | 秒,帶前導零的2位數字。 | `'00'`到`'59'` |
| S | 一個月的英文序數后綴,2個字符。 | `'st'`,`'nd'`,`'rd'`或`'th'` |
| t | 給定月份的天數。 | `28` to `31` |
| T | 本機的時區。 | `'EST'`,`'MDT'` |
| u | 微秒。 | `000000` to `999999` |
| U | 自Unix Epoch以來的二分之一(1970年1月1日00:00:00 UTC)。 | |
| w | 星期幾,數字無前導零。 | `'0'`(星期日)至`'6'`(星期六) |
| W | ISO-8601周數,周數從星期一開始。 | `1`,`53` |
| y | 年份,2位數字。 | `'99'` |
| Y | 年,4位數。 | `'1999年'` |
| z | 一年中的日子 | `0`到`365` |
| Z | 時區偏移量,單位為秒。 UTC以西時區的偏移量總是為負數,對於UTC以東時,它們總是為正。 | `-43200`到`43200` |

> 實例:
>
> now = datetime.datetime.now()
>
> 1){{ now|date:'Y-m-d H:i:s'}}
>
> 輸出類似:2018-10-09 11:15:22
>
> 2){{ now|date }}
>
> 輸出類似:Oct. 9, 2018
>
> 傳遞的格式可以是預定義的格式[`DATE_FORMAT`](https://yiyibooks.cn/__trs__/xx/Django_1.11.6/ref/settings.html#std:setting-DATE_FORMAT),[`DATETIME_FORMAT`](https://yiyibooks.cn/__trs__/xx/Django_1.11.6/ref/settings.html#std:setting-DATETIME_FORMAT),[`SHORT_DATE_FORMAT`](https://yiyibooks.cn/__trs__/xx/Django_1.11.6/ref/settings.html#std:setting-SHORT_DATE_FORMAT)或[`SHORT_DATETIME_FORMAT`](https://yiyibooks.cn/__trs__/xx/Django_1.11.6/ref/settings.html#std:setting-SHORT_DATETIME_FORMAT)
>
> 3){{ now|date:"DATETIME_FORMAT" }}
>
> 輸出類似:Oct. 9, 2018, 11:19 a.m.



#### 7. default

如果value的計算結果為`False`,則使用給定的默認值。 否則,使用該value。

{{ value|default:"nothing" }}



#### 8. default_if_none

{{ value|default_if_none:"nothing"}}

當且僅當value為`None`,則使用給定的默認值。 否則,使用該value。

注意,如果給出一個空字符串,默認值將*不*被使用。



#### 9. dictsort

{{ value|dictsort:"name" }}

接受一個字典列表,並返回按參數中給出的鍵排序后的列表。

> 實例:
>
> Value = [
> ​ {'name': 'zed', 'age': 19},
> ​ {'name': 'amy', 'age': 22},
> ​ {'name': 'joe', 'age': 31},
> ]
>
> {{ Value|dictsort:'name' }}
> {{ Value|dictsort:'age' }}
>
> 輸出:
>
> [{'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}, {'name': 'zed', 'age': 19}]
>
> [{'name': 'zed', 'age': 19}, {'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}]



#### 10. dictsortreversed

獲取字典列表,並返回按照參數中給出的鍵按相反順序排序的列表。 這與上面的過濾器完全相同,但返回的值將是相反的順序。



#### 11. divisibleby

{{ value|divisibleby:“2” }}

如果value可以被給出的參數整除,則返回 `True`

> 實例:
>
> value = 12
>
> {{ value|divisibleby:“2” }}
>
> 輸出:True



#### 12. filesizeformat

格式化為“可讀”文件大小(即`'13 KB'`,`t4> MB'`,`'102 bytes'`等)。

{{ value|filesizeformat }}

> 實例:
>
> value = 1234567890
>
> {{ value|filesizeformat }}
>
> 輸出:1.1 GB



#### 13. first

{{ value|first }}

返回序列中的第一項(字符串、列表、元組等)

如果`value`是列表`['a', 'b', 'c'] `,輸出將為`'a'`。



#### 14. floatformat

當不使用參數時,將浮點數舍入到小數點后一位;使用參數時,保留參數指定的位數

> 實例:
>
> pi = 3.1415926
>
> {{ pi|floatformat }}
>
> {{ pi|floatformat:0 }}
>
> {{ pi|floatformat:2 }}
>
> 輸出:
>
> 3.1
> 3
> 3.14



#### 15. get_digit

給定一個整數,返回所請求的數字,其中1是最右邊的數字,2是第二個最右邊的數字等。 返回無效輸入的原始值(如果輸入或參數不是整數,或參數小於1)。否則,輸出總是一個整數。

> 實例:
>
> {{ value|get_digit:"2" }}
>
> 如果`value`為`123456789`,則輸出將為`8`。



#### 16. join

使用字符串連接列表,例如Python的`str.join(list)`

{{ value|join:" // " }}

如果`value`是列表`['a', 'b', 'c'],輸出將為“a // b // C“。`



#### 17. last

返回列表中的最后一個項目

{{ value|last }}

如果`value`是列表`['a', 'b', 'c'],輸出將為'c'`



#### 18. length

返回值的長度

{{ value|length }}

如果`value`是`['a', 'b', 'c', 'd']`或`"abcd"`,輸出將為`4`。

對於未定義的變量,過濾器返回`0`。



#### 19. length_is

如果值的長度是參數,則返回`True`,否則返回`False`。

{{ value|length_is:"4" }}

如果value是['a', 'b', 'c', 'd']或"abcd",輸出將為True。



#### 20. linebreaks

替換純文本中的換行為正確的HTML標簽;單獨的一個換行變成(`<br/>`) ,原文本用p標簽包裹起來。

如果`value`為`Joel\nis a slug`,輸出將為`<p>Joel<br/>is a slug</p>`。



#### 21. linebreaksbr

與linebreaks類似, 區別是, linebreaksbr只替換換行, 替換完成后沒有p標簽包裹.

如果`value`為`Joel\nis a slug`,輸出將為`Joel<br/>is a slug`。



#### 22. linenumbers

輸出多行文本時, 在行前顯示行號.

{{ value|linenumbers }}

如果`value`為:

> one
> two
> three

輸出將是:

>1. one
>2. two
>3. three


#### 23. ljust

將給定寬度的字段中的值左對齊。

"{{ value|ljust:"10" }}"

如果`value`為`Django`,則輸出將為`“Django ”`。



#### 24. lower

將字符串轉換為全部小寫。

如果`value`是`ABC`, 則輸出將為`abc`



#### 25. make_list

返回轉換為列表的值。

{{ value|make_list }}

如果`value`是字符串`"Joel"`,輸出將是列表`['J', 'o' , 'e', 'l']`。 如果`value`為`123`,輸出將為列表`['1', '2', '3']`。



#### 26. pluralize

如果值不是1則返回一個復數形式 , 通常用 `'s'`表示.

例如:

> You have {{ num_messages }} message{{ num_messages|pluralize }}.

如果`num_messages`是`1`,則輸出將為 `You have 1 message.` 如果`num_messages`是`2`,輸出將為 `You have 2 messages.`

另外如果你需要的不是 `'s'`后綴的話, 你可以提供一個備選的參數給過濾器;

例如:

> You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.

對於非一般形式的復數,你可以同時指定 單復數形式,用逗號隔開.

例如:

> You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.



#### 27. pprint

用於調試, 方便查看.



#### 28. random

返回給定列表中的隨機項。

{{ value|random }}

如果value是['a', 'b', 'c', 'd'], 輸出可能是'c'.



#### 29. rjust

右對齊給定寬度字段中的值。



#### 30. safe

將字符串標記為在輸出之前不需要進一步的HTML轉義。 當自動轉義關閉時,此過濾器不起作用。



#### 31. safeseq

將[`safe`](https://yiyibooks.cn/__trs__/xx/Django_1.11.6/ref/templates/builtins.html#std:templatefilter-safe)過濾器應用於序列的每個元素。 與對序列進行操作的其他過濾器(例如[`join`](https://yiyibooks.cn/__trs__/xx/Django_1.11.6/ref/templates/builtins.html#std:templatefilter-join))一起使用非常有用。

{{ some_list|safeseq|join:", " }}



#### 32. slice

返回列表的一部分。

{{ some_list|slice:":2" }}

如果`some_list`為`['a', 'b', 'c']`,那么輸出將是`['a', 'b']`。



#### 33. striptags

盡一切可能努力剝離所有[X] HTML標簽。

{{ value|striptags }}

如果value為"\<b>cu ti\</b>", 輸出結果為cuti(不帶樣式).



#### 34. time

根據給定的格式格式化時間。

> 實例:
>
> now = datetime.datetime.now()
>
> {{ now|time:'H:i:s' }}
>
> 輸出類似:
>
> 13:25:53



### 35. timesince

將日期格式設為自該日期起的時間(例如,“4天,6小時”)。

> 實例:
>
> now = datetime.datetime.now()
>
> blog_date = now - datetime.timedelta(days=2)
>
> {{ blog_date|timesince:now }}
>
> {{ now|timesince:blog_date }}
>
> 輸出類似:
>
> 2 days
> 0 minutes



#### 36. timeuntil

與timesince類似

> 實例:
>
> now = datetime.datetime.now()
>
> blog_date = now - datetime.timedelta(days=2)
>
> {{ blog_date|timeuntil:now }}
>
> {{ now|timeuntil:blog_date }}
>
> 輸出類似:
>
> 0 minutes
> 2 days



#### 37. title

將字符串中的每個單詞首字母轉為大寫

{{ value|title }}

如果`value`為`“my FIRST post”`,輸出將為`“My First Post”`。



#### 38. truncatechars

如果字符串字符多於指定的字符數量,那么會被截斷。 截斷的字符串將以可翻譯的省略號序列(“...”)結尾。

{{ value|truncatechars:9 }}

如果`value`為`“myFIRSTpost”`,輸出將為`“MyFirst...”`。



#### 39.truncatewords

在一定數量的字后截斷字符串。

{{ value|truncatewords:2 }}

如果`value`為`“my name is post”`,輸出將為`“My name ...”`。



#### 40. upper

將字符串轉換為大寫形式

{{ value|upper }}

如果`value`是`abc`, 則輸出將為`ABC`



#### 41. urlencode

轉義要在URL中使用的值。

{{ value|urlencode }}

如果`value`為`"https://www.example.org/foo?a=b&c=d"`,輸出將為`"https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd"`

可以提供包含不應該轉義的字符的可選參數。

如果未提供,則'/'字符被假定為安全的。 當*所有*字符應該轉義時,可以提供空字符串。 像這樣:

{{ value|urlencode:"" }}

如果`value`為`"https://www.example.org/"`,輸出將為`"https%3A%2F%2Fwww.example.org%2F"`



#### 42. wordcount

返回字數(單詞數)

{{ value|wordcount }}

如果`value`是`“Joel is a slug”,輸出將為4`



#### 43. wordwrap

以指定的行長度換行單詞。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM