天天看點

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

渲染效果:

Django模闆之模闆變量過濾器

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

渲染效果:

Django模闆之模闆變量過濾器

轉載于:https://www.cnblogs.com/open-yang/p/11221499.html