Django 第五课 【过滤器】
##为什么需要过滤器
因为在DTL中,不支持函数的调用形式 ‘()’,因此不能给函数传递参数,这将有很大的局限性。而过滤器其实就是一个函数,可以对需要处理的参数进行处理,并且还可以额外接收一个参数(也就是说,最多2个参数)
在模板中,有时候需要对一些数据进行处理以后才能使用。一般在python中我们是通过函数函数的形式完成的。而在模板中,则是通过过滤器来实现的。过滤器使用的是 | 来使用。比如使用 add 过滤器,那么示例代码如下:
{{value|add:"2"}}
那么以下就讲下在开发过程常用的过滤器。
## add
将传过来的参数添加到原来的值上面。这个过滤器会尝试将 ‘值’ 和 ’参数‘ 转换成整形然后进行相加。如果转换成整形过程中失败了,那么会将 ’值‘ 和 ’参数‘ 进行拼接。 如果是字符串,那么会拼接字符串,如果是列表,那么会拼接成一个列表。示例代码如下:
{{ value|add:"2" }}
如果 ’value‘ 是等于4,那么结果就是6.。如果value是一个字符串,如’abc‘,那么结果就会是’abc2‘
'add'过滤器的源代码如下:
def add(value,arg) "add the arg to the value" try: return int(value) + int(arg) except (ValueError, TypeError) try: return value + arg except Exception: return ''
## cut
移除值中所有指定的字符串。类似于python中的 ’replace(args,“”)‘。示例代码如下:
{{value|cut:" "}}
以下示例将会移除value中所有的空格字符。cut过滤器的源代码如下
def cut(value, arg): "remove all values of arg from the given string" safe = isinstance(value, sateData) value = value.replace(arg, ' ') if safe and arg != ";" return mark_safe(value) return value
## date
将一个日期按照指示的格式,格式化字符串。示例代码如下:
#数据 context = { birthday = dayetime.now() } #过滤 {{birthday|date:"Y/m/d"}}