Django 模板过滤器
Django 模板引擎提供了用于转换变量值的过滤器;es 和标签参数。我们已经讨论了主要的 Django 模板标签。标签不能修改变量的值,而过滤器可用于增加变量的值或根据自己的需要修改它。
句法
{{ variable_name | filter_name }}
过滤器可以“链接”。一个过滤器的输出应用于下一个过滤器。 {{ text|escape|linebreaks }}
是转义文本内容,然后将换行符转换为
标记的常用习惯用法。
例子
{{ value | length }}
如果值为['a', 'b', 'c', 'd'] ,则输出将为4 。
Django 中的主要模板过滤器
本文围绕在项目中可以使用的各种 Django 模板过滤器展开。过滤器转换变量和标签参数的值。让我们检查一些主要的过滤器。
add | addslashes | capfirst |
center | cut | date |
default | dictsort | divisibleby |
escape | filesizeformat | first |
join | last | length |
linenumbers | lower | make_list |
random | slice | slugify |
time | timesince | title |
unordered_list | upper | wordcount |
添加
它用于向值添加参数。
例子{{ value | add:"2" }}
如果值为 4,则输出将为 6。此过滤器用于增加 django Templates 中的变量。
添加斜线
它用于在引号前添加斜杠。用于转义 CSV 中的字符串。
例子{{ value | addslashes }}
如果值为“I'm Jai”,则输出将为“I\'m Jai”。
第一帽
它用于将值的第一个字符大写。如果第一个字符不是字母,则此过滤器无效。
例子{{ value | capfirst }}
如果值为“jai”,则输出将为“Jai”。
中央
它用于在给定宽度的字段中将值居中。
例子"{{ value | center:"15" }}"
如果值为“Jai”,则输出将为“Jai”。
切
它用于从给定的字符串中删除 arg 的所有值。
例子
{{ value | cut:" " }}
如果值为“带空格的字符串”,则输出将为“带空格的字符串”。
日期
它用于根据给定格式格式化日期。
例子{{ value | date:"D d M Y" }}
如果 value 是 datetime 对象(例如 datetime.datetime.now() 的结果),则输出将是字符串“Thu 06 Feb 2020”。有关更多信息和模式,请访问此处。
默认
它用于为变量提供默认值。如果变量评估为 False,它将使用给定变量值本身的默认参数。
例子
{{ value | default:"nothing" }}
如果值为“”(空字符串),则输出将是空的。
字典排序
它接受一个字典列表并返回按参数中给出的键排序的列表。
例子{{ value | dictsort:"name" }}
如果值为:
[ {'name': 'zed', 'age': 19}, {'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}, ]
那么输出将是:
[ {'name': 'amy', 'age': 22}, {'name': 'joe', 'age': 31}, {'name': 'zed', 'age': 19}, ]
可除
如果该值可被参数整除,则返回 True。
例子{{ value | divisibleby:"3" }}
如果值为 21,则输出为 True。
逃脱
它用于转义字符串的 HTML。具体来说,它进行了以下替换:
< is converted to < > is converted to > ' (single quote) is converted to ' " (double quote) is converted to " & is converted to &
例子
{{ title | escape }}
文件大小格式
它用于将值格式化为“人类可读”文件大小(即“13 KB”、“4.1 MB”、“102 字节”等)。
例子{{ value | filesizeformat }}
如果值为 123456789,则输出将为 117.7 MB。
第一的
它用于返回列表中的第一项。
例子{{ value | first }}
如果 value 是列表 ['a', 'b', 'c'],则输出将为 'a'。
加入
它用于用字符串连接列表,如 Python 的 str.join(list)
例子{{ value | join:" // " }}
如果 value 是列表 ['a', 'b', 'c'],则输出将是字符串“a // b // c”。
最后的
它用于返回列表中的最后一项。
例子{{ value | last }}
如果 value 是列表 ['a', 'b', 'c', 'd'],则输出将是字符串“d”。
长度
它用于返回值的长度。这适用于字符串和列表。
例子{{ value | length }}
如果值为 ['a', 'b', 'c', 'd'] 或 “abcd”,则输出将为 4。
行号
它用于显示带有行号的文本。
例子{{ value | linenumbers }}
如果值为:
one two three
输出将是:
1. one 2. two 3. three
降低
它用于将字符串转换为全小写。
例子{{ value | lower }}}
如果值为My Name is Jai ,则输出将是my name is jai 。
制作清单
它用于返回变成列表的值。对于字符串,它是一个字符列表。对于整数,在创建列表之前将参数转换为字符串。
例子{{ value | make_list }}
如果 value 是字符串“Naveen”,则输出将是列表 ['N', 'a', 'v', 'e', 'e', 'n']。如果值为 123,则输出将是列表 ['1', '2', '3']。
随机的
它用于从给定列表中返回一个随机项目。
例子{{ value | random }}
如果 value 是列表 ['a', 'b', 'c', 'd'],则输出可能是“b”。
片
它用于返回列表的一部分。
例子{{ some_list | slice:":2" }}
如果 some_list 是 ['a', 'b', 'c'],则输出将是 ['a', 'b']。
软化
它用于转换为 ASCII。它将空格转换为连字符并删除不是字母数字、下划线或连字符的字符。转换为小写。还去除前导和尾随空格。
例子{{ value | slugify }}
如果值为“Jai is a slug”,则输出将为“jai-is-a-slug”。
时间
它用于根据给定的格式格式化时间。
例子{{ value | time:"H:i" }}
如果 value 等价于datetime.datetime.now() ,则输出将是字符串“01:23” 。
时代以来
它用于将日期格式化为自该日期以来的时间(例如,“4 天,6 小时”)。
例子
{{ blog_date | timesince:comment_date }}
如果 blog_date 是表示 2006 年 6 月 1 日午夜的日期实例,comment_date 是表示 2006 年 6 月 1 日 08:00 的日期实例,则以下将返回“8 小时”
标题
它用于通过使单词以大写字符开头而其余字符小写来将字符串转换为标题大小写。此过滤器不努力将“琐碎的单词”保留为小写。
例子
{{ value | title }}
如果值为“我的第一篇文章”,则输出将是“我的第一篇文章”。
无序列表
它用于递归地获取一个自嵌套列表并返回一个 HTML 无序列表——没有打开和关闭
- 标记。
- States
- Kansas
- Lawrence
- Topeka
- Illinois
- Kansas
例子{{ var | unordered_list }}
如果 var 包含
['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']],
则{{ var|unordered_list }}
将返回:- States
上
它用于将字符串转换为全部大写。
例子{{ value | upper }}
如果值为“Jai is a slug”,则输出将是“JAI IS A SLUG”。
字数
它用于返回单词的数量。
例子{{ value | wordcount }}
如果值为“jai is a slug”,则输出将为 4。