Django模板之模板變量過濾器


  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"})

渲染效果:

 

 


免責聲明!

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



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