变量示例
<a href="{{ 变量.字典/属性方法/数字索引 }}">
{{ 变量|过滤器1|过滤器2 }}
</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/空变量提供默认值
{{ value|default:"nothing" }}
# 字符串参数不会自动转义,所以下面的
{{ data|default:"3 < 2" }} {# 错误的做法 #}
{{ data|default:"3 < 2" }} {# 正确 #}
1.2.2. join
连接列表中元素
{{ list|join:", " }}
# 参数中有空格必须用 ""
1.2.3. length
返回值的长度数字(字符串、列表)
{{ value|length }}
1.2.4. random
返回给定列表中的随机项
{{ value|random }}
1.3. 文本
1.3.1. truncatewords
返回前N个字
{{ bio|truncatewords:30 }}
# 显示bio变量的前30个词并在结尾显示 ...
1.3.2. truncatechars
返回前N个字
{{ bio|truncatechars:30 }}
# 显示bio变量的前30个字(如果包含html,使用下面的会不出错)
{{ bio|truncatechars_html:30 }}
1.3.3. cut
移除给定字符串
{{ value|cut:" " }}
# “String with spaces” => "Stringwithspaces"
1.3.4. linebreaks
替换纯文本中换行符为
{{ value|linebreaks }}
# Joel\nis a slug => <p>Joel</p><p>is a slug</p>
1.3.4. linebreaksbr
替换纯文本中的换行符为
{{ value|linebreaksbr }}
1.4. 字母
1.4.1. title
首字母大写
{{ value|title }}
# my FIRST post => My First Post
1.5. 安全
1.5.1. safe
不需要转义(一定清楚什么时候用)
{{ data|safe }}
# 如果 data 中包含 <script>alert('hello')</script>
# 它将会被执行
1.6. 日期时间
1.6.1. date / time
日期 / 时间 过滤
{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}
1.6.2. timesince
给定日期距离传入日期值的时间
{{ blog_date|timesince:comment_date }}
# comment_date 如果比 blog_date 晚 8小时,则显示 8hours
1.6.3. timeuntil
给定日期距离传入未来日期的时间
{{ conference_date|timeuntil:from_date }}
# 比如距离会议开幕还有多久
1.7. 其他
1.7.1. dictsort
给字典元素按给定键的值排序(反向用 dictsortreversed)
比如,传入的数据(字典):
books = [
{'title': '1984', 'author': {'name': 'George', 'age': 45}},
{'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}},
{'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}},
]
模板中(按 author 的 age 排序):
{% for book in books|dictsort:"author.age" %}
* {{ book.title }} ({{ book.author.name }})
{% 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 | 四舍五入 |