变量示例

  1. <a href="{{ 变量.字典/属性方法/数字索引 }}">
  2. {{ 变量|过滤器1|过滤器2 }}
  3. </a>

1. 过滤器

1.1. 【速查表单】

过滤器 描述
常用 -
default 为False/空变量提供默认值
join 连接列表中元素
length 返回值的长度数字(字符串、列表)
random 返回给定列表中的随机项
文本 -
truncatewords 返回前N个字
truncatechars 返回前N个字符
cut 移除给定字符串
linebreaks 替换纯文本中换行符为<p>
linebreaksbr 替换纯文本中的换行符为<br />
字母 -
title 首字母大写
lower 小写
upper 大写
安全 -
safe 不需要转义(一定清楚什么时候用)
日期时间 -
date / time 日期 / 时间 过滤
timesince 给定日期距离传入日期值的时间
timeuntil 给定日期距离传入未来日期的时间
文件 -
filesizeformat 易读文件大小
其他 -
dictsort 字典排序
floatformat 浮点数位数

1.2. 常用

1.2.1. default

为False/空变量提供默认值

  1. {{ value|default:"nothing" }}
  2. # 字符串参数不会自动转义,所以下面的
  3. {{ data|default:"3 < 2" }} {# 错误的做法 #}
  4. {{ data|default:"3 &lt; 2" }} {# 正确 #}

1.2.2. join

连接列表中元素

  1. {{ list|join:", " }}
  2. # 参数中有空格必须用 ""

1.2.3. length

返回值的长度数字(字符串、列表)

  1. {{ value|length }}

1.2.4. random

返回给定列表中的随机项

  1. {{ value|random }}

1.3. 文本

1.3.1. truncatewords

返回前N个字

  1. {{ bio|truncatewords:30 }}
  2. # 显示bio变量的前30个词并在结尾显示 ...

1.3.2. truncatechars

返回前N个字

  1. {{ bio|truncatechars:30 }}
  2. # 显示bio变量的前30个字(如果包含html,使用下面的会不出错)
  3. {{ bio|truncatechars_html:30 }}

1.3.3. cut

移除给定字符串

  1. {{ value|cut:" " }}
  2. # “String with spaces” => "Stringwithspaces"

1.3.4. linebreaks

替换纯文本中换行符为

  1. {{ value|linebreaks }}
  2. # Joel\nis a slug => <p>Joel</p><p>is a slug</p>

1.3.4. linebreaksbr

替换纯文本中的换行符为

  1. {{ value|linebreaksbr }}

1.4. 字母

1.4.1. title

首字母大写

  1. {{ value|title }}
  2. # my FIRST post => My First Post

1.5. 安全

1.5.1. safe

不需要转义(一定清楚什么时候用)

  1. {{ data|safe }}
  2. # 如果 data 中包含 <script>alert('hello')</script>
  3. # 它将会被执行

1.6. 日期时间

1.6.1. date / time

日期 / 时间 过滤

  1. {{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

1.6.2. timesince

给定日期距离传入日期值的时间

  1. {{ blog_date|timesince:comment_date }}
  2. # comment_date 如果比 blog_date 晚 8小时,则显示 8hours

1.6.3. timeuntil

给定日期距离传入未来日期的时间

  1. {{ conference_date|timeuntil:from_date }}
  2. # 比如距离会议开幕还有多久

1.7. 其他

1.7.1. dictsort

给字典元素按给定键的值排序(反向用 dictsortreversed)

比如,传入的数据(字典):

  1. books = [
  2. {'title': '1984', 'author': {'name': 'George', 'age': 45}},
  3. {'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}},
  4. {'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}},
  5. ]

模板中(按 author 的 age 排序):

  1. {% for book in books|dictsort:"author.age" %}
  2. * {{ book.title }} ({{ book.author.name }})
  3. {% endfor %}

输出效果:

  • Alice (Lewis)
  • 1984 (George)
  • Timequake (Kurt)

1.7.2. floatformat

value 模板语法 输出 备注
34.26000 `{{ value floatformat }}` 34.3 默认,一位小数
34.00000 `{{ value floatformat:3 }}` 34.000 三位小数
34.23234 `{{ value floatformat:“0” }}` 34 最接近的整数
34.26000 `{{ value floatformat:“ - 3” }}` 34.260 四舍五入