
## 模版常用過濾器
在模版中,有時候需要對一些數據進行處理以后才能使用。一般在Python中我們是通過函數的形式來完成的。而在模版中,則是通過過濾器來實現的。過濾器使用的是|來使用。
### add
將傳進來的參數添加到原來的值上面。這個過濾器會嘗試將值和參數轉換成整形然后進行相加。如果轉換成整形過程中失敗了,那么會將值和參數進行拼接。如果是字符串,那么會拼接成字符串,如果是列表,那么會拼接成一個列表。
```
{{ value|add:"2" }}
```
如果value是等于4,那么結果將是6。如果value是等于一個普通的字符串,比如abc,那么結果將是abc2。
### cut
移除值中所有指定的字符串。類似于python中的replace(args,"")。
```
{{ value|cut:" " }}
```
### date
將一個日期按照指定的格式,格式化成字符串。
```
# 數據
context = {
"birthday": datetime.now()
}
# 模版
{{ birthday|date:"Y/m/d" }}
```
那么將會輸出2018/02/01。其中Y代表的是四位數字的年份,m代表的是兩位數字的月份,d代表的是兩位數字的日。
<table>
<thead>
<tr>
<th>格式字符</th>
<th>描述</th>
<th>示例</th>
</tr>
</thead>
<tbody>
<tr>
<td>Y</td>
<td>四位數字的年份</td>
<td>2018</td>
</tr>
<tr>
<td>m</td>
<td>兩位數字的月份</td>
<td>01-12</td>
</tr>
<tr>
<td>n</td>
<td>月份,1-9前面沒有0前綴</td>
<td>1-12</td>
</tr>
<tr>
<td>d</td>
<td>兩位數字的天</td>
<td>01-31</td>
</tr>
<tr>
<td>j</td>
<td>天,但是1-9前面沒有0前綴</td>
<td>1-31</td>
</tr>
<tr>
<td>g</td>
<td>小時,12小時格式的,1-9前面沒有0前綴</td>
<td>1-12</td>
</tr>
<tr>
<td>h</td>
<td>小時,12小時格式的,1-9前面有0前綴</td>
<td>01-12</td>
</tr>
<tr>
<td>G</td>
<td>小時,24小時格式的,1-9前面沒有0前綴</td>
<td>1-23</td>
</tr>
<tr>
<td>H</td>
<td>小時,24小時格式的,1-9前面有0前綴</td>
<td>01-23</td>
</tr>
<tr>
<td>i</td>
<td>分鐘,1-9前面有0前綴</td>
<td>00-59</td>
</tr>
<tr>
<td>s</td>
<td>秒,1-9前面有0前綴</td>
<td>00-59</td>
</tr>
</tbody>
</table>
### default
如果值被評估為False。比如[],"",None,{}等這些在if判斷中為False的值,都會使用default過濾器提供的默認值。
```
{{ value|default:"nothing" }}
```
如果value是等于一個空的字符串。比如"",那么以上代碼將會輸出nothing。
### first
返回列表/元組/字符串中的第一個元素。
```
{{ value|first }}
```
如果value是等于['a','b','c'],那么輸出將會是a。
### last
返回列表/元組/字符串中的最后一個元素。
```
{{ value|last }}
```
如果value是等于['a','b','c'],那么輸出將會是c。
### floatformat
使用四舍五入的方式格式化一個浮點類型。如果這個過濾器沒有傳遞任何參數。那么只會在小數點后保留一個小數,如果小數后面全是0,那么只會保留整數。當然也可以傳遞一個參數,標識具體要保留幾個小數。
```
<li>{{ 34.32|floatformat }}</li> 34.3
<li>{{ 34.35|floatformat }}</li> 34.4
<li>{{ 34.353333|floatformat:3}}</li> 34.353
```
### join
類似與Python中的join,將列表/元組/字符串用指定的字符進行拼接.
```
{{ value|join:"/" }}
```
如果value是等于['a','b','c'],那么以上代碼將輸出a/b/c。
### length
獲取一個列表/元組/字符串/字典的長度。
```
{{ value|length }}
```
如果value是等于['a','b','c'],那么以上代碼將輸出3。如果value為None,那么以上將返回0。
### lower
將值中所有的字符全部轉換成小寫。
```
{{ value|lower }}
```
如果value是等于Hello World。那么以上代碼將輸出hello world。
### upper
類似于lower,只不過是將指定的字符串全部轉換成大寫。
### random
在被給的列表/字符串/元組中隨機的選擇一個值。
```
{{ value|random }}
```
如果value是等于['a','b','c'],那么以上代碼會在列表中隨機選擇一個。
### safe
標記一個字符串是安全的。也即會關掉這個字符串的自動轉義。
```
{{value|safe}}
```
如果value是一個不包含任何特殊字符的字符串,比如<a>這種,那么以上代碼就會把字符串正常的輸入。如果value是一串html代碼,那么以上代碼將會把這個html代碼渲染到瀏覽器中。
### slice
類似于Python中的切片操作。
```
{{ some_list|slice:"2:" }}
```
以上代碼將會給some_list從2開始做切片操作。
### stringtags
刪除字符串中所有的html標簽。
```
{{ value|striptags }}
```
如果value是<strong>hello world</strong>,那么以上代碼將會輸出hello world。
### truncatechars
如果給定的字符串長度超過了過濾器指定的長度。那么就會進行切割,并且會拼接三個點來作為省略號。
```
{{ value|truncatechars:5 }}
```
如果value是等于北京歡迎你,那么輸出的結果是北京歡迎你。如果長度大于5,會截取到長度為4的位置,后面用....來代替
更多可以查看Django源碼:
```
from django.template import defaultfilters,defaulttags
```
- 空白目錄
- 1-Django前導知識
- 1-1-虛擬環境
- 1-2-Django框架介紹與環境搭建
- 2-URL與視圖
- 2-1-URL與視圖
- 3-模板
- 3-1-模板介紹
- 3-2-模板變量
- 3-3-常用標簽
- 3-4-模板常用過濾器
- 3-5-模板結構優化
- 3-6-加載靜態文件
- 4-數據庫
- 4-1-操作數據庫
- 4-2-圖書管理系統
- 4-3-ORM模型介紹
- 4-4-ORM模型的增刪改查
- 4-5-模型常用屬性
- 4-6-外鍵和表
- 4-7-查詢操作
- 4-8-QuerySet的方法
- 4-9-ORM模型練習
- 4-10-ORM模型遷移
- 5-視圖高級
- 1-Django限制請求method
- 2-頁面重定向
- 3-HttpRequest對象
- 4-HttpResponse對象
- 5-類視圖
- 6-錯誤處理
- 6-表單
- 1-用表單驗證數據
- 2-ModelForm
- 3-文件上傳
- 7-session和cookie
- 1-session和cookie
- 8-memcached
- 1-memcached
- 9-阿里云部署
- 阿里云部署