前面学习了向模板代码传送参数、if语句和for语句,已经可以处理很多种情况了,接着下来学习一个比较特别的功能,就是过滤器。顾名思义,过滤器就是过滤掉某些东西。比如一串小写的字符串,因为页面要显示为大写,那么怎么办呢?这时候常常有两种做法,一种是python代码里处理,也就是说把所有要输出大写的字符串在python代码里先进行变换成大写,然后再透过变量传送给模板,模板可以直接拿到就可以显示了。另外一种是不管变量的大小写了,直接把字符串传送给模板,让模板来处理。这种前后端都可以处理的工作,往往就是前后端开发人员吵得天翻地覆的地方。如果客户提出BUG出来了,前后端就会开始相互推卸责任,前端说后端没有按要求传送进来,后端就说前端太笨了,添加一个函数就可以解决的问题。这种问题别看起来是小问题,其实在一个团队里,往往就是一个定时炸弹。因为这个前后端都可以处理的问题,就很难界定谁来做,谁不做的问题。按照我以往的管理经验来说,我认为应该是前端来负责,因为前端负责所有的显示,如果显示不对,一定要自己处理,如果自己无法处理,那么就要要求后端的人员提供合格的数据,把握好这一关才行。如果你作为一个前端人员,又不懂过滤器,就比较难处理了,因此需要学习一下本文的内容。
过滤器本质上是一个转换函数,把字符串或者变量转换为另外一种东西。由于在模板中不能直接调用python的代码,包括python的内置函数等等。因此在模板中进行一些简单的处理,都不会太方便,为了解决这种问题,Flask框架提供了过滤器。