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"}}

 

posted @ 2018-08-09 20:49  Nelsen_Chen  阅读(187)  评论(0编辑  收藏  举报