# 7.4 过滤器与管道命令

代码1

```
{# 注意这里的data里是不存在school的值的 #}
{{ data.school | default("未名")}}
```

这段代码在浏览器中会显示“未名”。

代码2

```
{# 注意这里的data里是不存在school的值的 #}
{{ data.school==None | default("未名")}}
```

这段代码在浏览器中会显示False。

代码3

```
{# 注意这里的data里是不存在school的值的 #}
{{ data.school | default(data.class)| default("未名")}}
```

这段代码在浏览器中会显示”未名“。

> * 管道命令“|”是首先计算“|”前面的表达式的值,然后将结果传到“|”后面的表达式。
>   * default函数的作用是先判断前面传来的值存在不存在，如果存在直接返回，否则返回参数的值
>   * data.school 这个属性不存在，所以第一段代码会执行default函数，而data.school==None结果是False，这个结果存在，所以第二段代码直接返回False
>   * 第三段代码，首先计算data.school，传入下面的default，data.school不存在，所以返回data.class，data.class又回传入第三个default，data.class不存在，所以返回”未名“

代码4

```
{# data = {name:"mark",age:19} #}
{{ data | length() }}
```

这段代码返回2，因为length()函数，返回前面传入结果的长度
