# 過濾器詳解
過濾器的參數
創建test視圖
```text
from datetime import *
def test(request):
str = "abcdefghi"
date = datetime.now()
num = [
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
print(num)
context = {'str':str,'dateTime':date,'num':num}
return render(request,'myapp/test.html',context)
```
* 顯示前n個字
```text
{{str|truncatewords:'30'}}
```
* 格式化
```text
{{dateTime|date:"Y-m"}}
```
* 過濾器列表
```text
{{ 123|add:"5" }} 給value加上一個數值
{{ "AB'CD"|addslashes }} 單引號加上轉義號,一般用于輸出到javascript中
{{ "abcd"|capfirst }} 第一個字母大寫
{{ "abcd"|center:"50" }} 輸出指定長度的字符串,并把值對中
{{ "123spam456spam789"|cut:"spam" }} 查找刪除指定字符串
{{ value|date:"F j, Y" }} 格式化日期
{{ value|default:"(N/A)" }} 值不存在,使用指定值
{{ value|default_if_none:"(N/A)" }} 值是None,使用指定值
{{ 列表變量|dictsort:"數字" }} 排序從小到大
{{ 列表變量|dictsortreversed:"數字" }} 排序從大到小
{% if 92|pisibleby:"2" %} 判斷是否整除指定數字
{{ string|escape }} 轉換為html實體
{{ 21984124|filesizeformat }} 以1024為基數,計算最大值,保留1位小數,增加可讀性
{{ list|first }} 返回列表第一個元素
{{ "ik23hr&jqwh"|fix_ampersands }} &轉為&
{{ 13.414121241|floatformat }} 保留1位小數,可為負數,幾種形式
{{ 13.414121241|floatformat:"2" }} 保留2位小數
{{ 23456 |get_digit:"1" }} 從個位數開始截取指定位置的1個數字
{{ list|join:", " }} 用指定分隔符連接列表
{{ list|length }} 返回列表個數
{% if 列表|length_is:"3" %} 列表個數是否指定數值
{{ "ABCD"|linebreaks }} 用新行用、標記包裹
{{ "ABCD"|linebreaksbr }} 用新行用 標記包裹
{{ 變量|linenumbers }} 為變量中每一行加上行號
{{ "abcd"|ljust:"50" }} 把字符串在指定寬度中對左,其它用空格填充
{{ "ABCD"|lower }} 小寫
{% for i in "1abc1"|make_list %}ABCDE,{% endfor %} 把字符串或數字的字符個數作為一個列表
{{ "abcdefghijklmnopqrstuvwxyz"|phone2numeric }} 把字符轉為可以對應的數字??
{{ 列表或數字|pluralize }} 單詞的復數形式,如列表字符串個數大于1,返回s,否則返回空串
{{ 列表或數字|pluralize:"es" }} 指定es
{{ 列表或數字|pluralize:"y,ies" }} 指定ies替換為y
{{ object|pprint }} 顯示一個對象的值
{{ 列表|random }} 返回列表的隨機一項
{{ string|removetags:"br p p" }} 刪除字符串中指定html標記
{{ string|rjust:"50" }} 把字符串在指定寬度中對右,其它用空格填充
{{ 列表|slice:":2" }} 切片
{{ string|slugify }} 字符串中留下減號和下劃線,其它符號刪除,空格用減號替換
{{ 3|stringformat:"02i" }} 字符串格式,使用Python的字符串格式語法
{{ "EABCD"|striptags }} 剝去[X]HTML語法標記
{{ 時間變量|time:"P" }} 日期的時間部分格式
{{ datetime|timesince }} 給定日期到現在過去了多少時間
{{ datetime|timesince:"other_datetime" }} 兩日期間過去了多少時間
{{ datetime|timeuntil }} 給定日期到現在過去了多少時間,與上面的區別在于2日期的前后位置。
{{ datetime|timeuntil:"other_datetime" }} 兩日期間過去了多少時間
{{ "abdsadf"|title }} 首字母大寫
{{ "A B C D E F"|truncatewords:"3" }} 截取指定個數的單詞
{{ "111221"|truncatewords_html:"2" }} 截取指定個數的html標記,并補完整
{{ list|unordered_list }}多重嵌套列表展現為html的無序列表
{{ string|upper }} 全部大寫
{{ string|urlize }} 將URLs由純文本變為可點擊的鏈接。
{{ string|urlizetrunc:"30" }} 同上,多個截取字符數。
{{ "B C D E F"|wordcount }} 單詞數
{{ "a b c d e f g h i j k"|wordwrap:"5" }} 每指定數量的字符就插入回車符
{{ boolean|yesno:"Yes,No,Perhaps" }} 對三種值的返回字符串,對應是 非空,空,None。
```
```text
test.html模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
顯示前2個字符:{{ str|truncatewords:"2" }}<br />
大寫:{{ str|upper }}<br />
格式化:{{ dateTime|date:'Y-m-s' }}<br/>
加法:{{ 123|add:'5' }}<br />
單引號加上轉義號,一般用于輸出到javascript中:{{ "AB'CD"|addslashes }}<br />
首字母大寫:{{ 'angle'|upper }}<br />
輸出指定長度,并把值對中:{{ 'angle'|center:'1000' }}<br />
查找刪除指定字符串:{{ 'angle'|cut:'an' }}<br />
格式化日期:{{ dateTime|date:"Y-M" }}<br />
如果值不存在,則返回默認值:{{ angle|default:"沒有"}}<br />
如果值不存在,默認值是None,可以指定默認值:{{ angle|default_if_none:"沒有" }}<br />
排序從小到大:{{ num|dictsort:"name"}}<br />
排序從大到小:{{ num|dictsortreversed:"name" }}<br />
....
</div>
</body>
</html>
```