变量示例
<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 | 四舍五入 |
