例項1
safe
讓html標籤以及一些特殊符號(如<)生效,下面以例子說明:
#
value = 'cpt'
#
那麼輸出的時候,cpt就是加粗的,如果不加safe那麼顯示出來的就是純文字cpt
}
striptags
取消所有html標籤,下面以例子說明:
#
value = 'cpt
'
#
那麼輸出的時候,只有cpt且沒有加粗沒有段落;如果不加的話會顯示全部文字cpt
}
linebreaks
讓\n這種控制符號變化html可以識別的
#
value = 'cpt\ncpt'
#
那麼輸出的時候,會以這樣的格式輸出cpt
cpt,注意這些標籤會生效,即會真的換行
#
很多時候在js裡呼叫字串會產生語法錯誤,大部分情況是因為沒有注意到\n的存在,想想為什麼?
}
truncatechars
這是今天介紹的四個filter中唯一乙個帶有引數的,用來擷取字串的一段,用法如下:
#
value = 'cptttttttttttt'
#
那麼輸出的時候,會輸出'cpt'
}
有了這四個工具之後我們來討論一些具體問題,都是以上列舉場景的詳細情況。
不想顯示出html標籤
一篇文章總有粗體或者什麼的,總有紅色藍色的,也就說是必須要被裝飾的,但是從資料庫中取出來的只是乙個長字串,因此我們需要告訴前端如何顯示這些文字,這個時候只需要簡單的使用safe過濾器即可。
影響排版
往往問題都出現在什麼時候呢?出現在擷取字串即truncatechars同時使用的時候,比如在首頁的時候我只想顯示某些文章的前100個字,也許採用truncatechars:100過濾器擷取,可以採用以下方法:
}
但很多時候這樣還是會出錯,為什麼呢?因為也許你擷取的100個字元裡html語法本身就是錯誤的,比如有
卻沒有。所以出錯就很顯然了,但是有些人這樣用:
}
想擷取但不想渲染
很多情況都可以通過上面的句子解決,但有些時候我們並不想在首頁顯示文章摘要的時候渲染這些文字,比如正文中有些紅紅綠綠的字,但是我們顯示摘要的時候只想顯示純黑色得字,怎麼辦呢?沒錯,把上面的safe直接改成striptags即可。
在js裡呼叫
但情況再噁心點,比如你在js裡呼叫,你還得考慮什麼?沒錯js是不支援換行的引號的,就是說js裡的引號只支援到一行,下面的語法在js裡是錯誤的:
var
s =
'aaaaa
bbbb'
但是我們不能保證從資料庫中取出來的東西都沒有換行,也許你還想擷取前100個字元,也許你還想不顯示這些html標籤,好吧,看下面的**:
}
再噁心一點?
你其實會發現空格,大於號,小於號這些東西會以 , 《這些形式儲存的,所以上面的語句執行之後可能還有會 這種神奇的東西!如果這些東西出現在首頁,那是要死的節奏啊。所以下面這條語句完美解決,好吧,我得了不用上四個過濾器會死的病:
}
例項2
需求:通過以鍵方式從字典中取值,如 test[key]=value
views.py
from django.template importrequestcontextfrom django.shortcuts importrender_to_response
defview(request)
dicts =
return render_to_response("index.html", ,context_instance = requestcontext(request))
from django importtemplateregister =template.library()
defkey(d,key_name):
value =0
try:
value =d[key_name]
exceptkeyerror:
value =0
returnvalue
register.filter('key',key)
3.在模板中使用
#載入自定認標籤}
django過濾器大全
1 add 將value的值增加2。使用形式為 2 addslashes 在value中的引號前增加反斜線。使用形式為 3 capfirst value的第乙個字元轉化成大寫形式。使用形式為 4 cut 從給定value中刪除所有arg的值。使用形式為 5 date 格式化時間格式。使用形式為 也可...
django 建立過濾器的例項詳解
django 建立過濾器 一 需求 假如有乙個模板檔案有乙個字串變數,這個字串變數中不能有任何的空格,而恰恰這個模板被很多個檢視函式多呼叫,那麼你每次在檢視函式中穿這個字串變數的時候,都要進行字串的處理,這www.cppcns.com相對來說是比較麻煩的,django提供了一種叫做過濾器的方式,可以...
Django過濾器的使用
django模板 django採用的是mvc模式,最後從資料庫取出來的資料會經過view檢視渲染到template模板上,在模板上載入資料使用的是模板語言。在模版中,有時候需要對一些資料進行處理以後才能使用。一般在 python 中我們是通過函式的形 式來完成的。而在模版中,則是通過過濾器來實現的。...