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的?