Django 過濾器 例項

2022-05-04 19:15:13 字數 2557 閱讀 8323

例項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裡是錯誤的:

vars ='aaaaa

bbbb'

但是我們不能保證從資料庫中取出來的東西都沒有換行,也許你還想擷取前100個字元,也許你還想不顯示這些html標籤,好吧,看下面的**:

}

再噁心一點?

你其實會發現空格,大於號,小於號這些東西會以 , 《這些形式儲存的,所以上面的語句執行之後可能還有會 這種神奇的東西!如果這些東西出現在首頁,那是要死的節奏啊。所以下面這條語句完美解決,好吧,我得了不用上四個過濾器會死的病:

}

例項2

需求:通過以鍵方式從字典中取值,如 test[key]=value

views.py

from django.template importrequestcontext

from django.shortcuts importrender_to_response

defview(request)

dicts =

return render_to_response("index.html", ,context_instance = requestcontext(request))

from django importtemplate

register =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 中我們是通過函式的形 式來完成的。而在模版中,則是通過過濾器來實現的。...