在Django的模闆語言中,通過使用 過濾器 來改變變量的顯示;Django的模闆語言中提供了大約六十個内置過濾器。
過濾器規則:
· 過濾器的文法: {{ value|filter_name:參數 }}
· 使用管道符"|"來應用過濾器。
注意事項:
a. 過濾器支援“鍊式”操作。即一個過濾器的輸出作為另一個過濾器的輸入。
b. 過濾器可以接受參數,例如:{{ sss|truncatewords:30 }},這将顯示sss的前30個詞。
c. 過濾器參數包含空格的話,必須用引号包裹起來。比如使用逗号和空格去連接配接一個清單中的元素,如:{{ list|join:', ' }}
d. '|'左右沒有空格 在Django的模闆語言中,通過使用 過濾器 來改變變量的顯示;Django的模闆語言中提供了大約六十個内置過濾器。
過濾器規則:
· 過濾器的文法: {{ value|filter_name:參數 }}
· 使用管道符"|"來應用過濾器。
注意事項:
a. 過濾器支援“鍊式”操作。即一個過濾器的輸出作為另一個過濾器的輸入。
b. 過濾器可以接受參數,例如:{{ sss|truncatewords:30 }},這将顯示sss的前30個詞。
c. 過濾器參數包含空格的話,必須用引号包裹起來。比如使用逗号和空格去連接配接一個清單中的元素,如:{{ list|join:', ' }}
d. '|'左右沒有空格
常用過濾器:
lower | 将變量全部轉換成小寫 | {{ value|lower}} | 如果value傳來的字元串是"Name",會顯示"name" |
upper | 将變量全部轉換成大寫 | {{ value|upper}} | 如果value傳來的字元串是"Name",會顯示"NAME" |
default | 變量設定預設值 | {{ value|default:"nothing"}} | 如果value沒有傳值或者值為空的話就顯示nothing |
length | 傳回字元串和清單變量的長度 | {{ value|length }} | 如 value=['a', 'b', 'c', 'd']的話,就顯示4 |
safe | 對HTML标簽和JS等文法标簽進行自動轉義 | {{ value|safe}} | 比如:value="<script>alert('123')</script>" |
filesizeformat | 将值格式化為一個檔案大小(例如 '13 KB', '4.1 MB', '102 bytes'…) | {{ value|filesizeformat }} | 如果 value 是 123456789,輸出将會是 117.7 MB。 |
slice | 切片 | {{ value|slice:"2:-1" }} | 如果 value="hello world" |
date | 日期時間格式化 | {{ value|date:"Y-m-d H:i:s"}} | 如果 value=datetime.datetime.now() |
truncatechars | 截取字元串 | {{ value|truncatechars:9}} | 如果字元串字元多于指定的字元數量,那麼會被截斷。截斷的字元串将以可翻譯的省略号序列(“...”)結尾,同時是數量包含在參數個數中 |
truncatewords | 截取單詞數 | {{ value|truncatewords:3}} | 例如:‘hello girl hi baby yue ma’,得到的結果是 'hello girl h1...' |
cut | 移除與給出參數相同的字元串 | {{ value|cut:' ' }} | 如果value為'i love you',那麼将輸出'iloveyou' |
join | 按給定參數字元拼接 | {{ value|join:"+" }} | 如果value為['i', 'love', 'you'],那麼将輸出'i+love+you' |
過濾器safe
Django的模闆中在進行模闆渲染的時候會對HTML标簽和JS等文法标簽進行自動轉義,這樣是為了安全,django擔心這是使用者添加的資料,比如如果有人給你評論的時候寫了一段js代碼,這個評論一送出,js代碼就執行啦,這樣你是不是可以搞一些壞事兒了,寫個彈窗的死循環,那浏覽器還能用嗎,是不是會一直彈窗啊,這叫做xss攻擊,是以浏覽器不讓你這麼搞,給你轉義了。但是有的時候我們可能不希望這些HTML元素被轉義,比如我們做一個内容管理系統,背景添加的文章中是經過修飾的,這些修飾可能是通過一個類似于FCKeditor編輯加注了HTML修飾符的文本,如果自動轉義的話顯示的就是保護HTML标簽的源檔案。為了在Django中關閉HTML的自動轉義有兩種方式,如果是一個單獨的變量我們可以通過過濾器“|safe”的方式告訴Django這段代碼是安全的不必轉義
過濾器案例:
lower/upper
filtertest.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>模闆變量過濾器filter測試</title>
6 </head>
7 <body>
8 <div>
9 <h1>{{ str }}</h1>
10 <h1>{{ str|lower }}</h1>
11 <h1>{{ str|upper }}</h1>
12 </div>
13 </body>
14 </html>
views.py
1 def filtertest(request):
2 s="FILter"
3 return render(request,"filtertest.html",{"str":s})
渲染效果:

default
filtertest.html
1 <h1>{{ name|default:"yang" }}</h1>
2 <h1>{{ m|default:"yang" }}</h1>
views.py
1 def filtertest(request):
2 return render(request,"filtertest.html",{"m":"100"})
渲染效果:
轉載于:https://www.cnblogs.com/open-yang/p/11221499.html