unix下的binutils短小精悍,用膠水(俺經常成管道為膠水)緊密結合在一起釋放巨大的能量。django的過濾器也學習了這個方式,每個版本的django都自帶了一些builtin的filter,當然我們也可以根據需要自己寫。
在寫代碼的過程中,遇到在render內容到html后,想基於此修改或者獲取一些其他的信息,我一般選擇是自己寫個filter,十有八九都能work!今天就碰到了個問題,自定義的filter不能工作。
一個同事要求在錄入信息后,展示的時候要有間即所得的功能,例如,他輸入了:
port1 => 保留<
port2 => comb1
port2 => comb3
在展示的時候也要能有換行以及一些特殊字符。
我的思路是在這些信息入庫之前替換,以為這樣就可以了,發現不能正常render,django將他們escape了,如何讓django跳過轉義?經過測試,發現如果render raw字符串,就能正常工作,可我用的是變量,如何將包含字符串的變量轉換成raw的,愣是沒找到方法,最后求救,老同事來了看看我寫的filter,然后只簡單在模板最后加了一個過濾器:|safe,就ok了!
safe
Marks a string as not requiring further HTML escaping prior to output. When autoescaping is off, this filter has no effect.
在django輸出之前,要求不對字符串轉義。當自動轉義關閉的時候,這個過濾器失效。
看來還是要多看django doc!有沒有方法將包含字符串的變量轉換成raw的?