测试开发之Django——No7.Django模板中的过滤器
1.add
将参数添加到值。
例如:
{{ value|add:"2" }}
如果value
是4
,那么输出将是6
。
此过滤器将首先尝试将两个值强制转换为整数。如果失败,它将尝试将值一起添加到一起。这将适用于某些数据类型(字符串,列表等),而对其他数据类型则失败。如果失败,结果将为空字符串。
例如,如果我们有:
{{ first|add:second }}
和first
是与是,那么输出将是。[1, 2, 3]
second
[4, 5, 6]
[1, 2, 3, 4, 5, 6]
2.addslashes
在引号前添加斜杠。例如,用于转义CSV中的字符串很有用。
例如:
{{ value|addslashes }}
如果value
是,输出将是 。"I'm using Django"
"I\'m using Django"
5.cut
从给定的字符串中删除arg的所有值。
例如:
{{ value|cut:" " }}
如果value
是,输出将是 。"String with spaces"
"Stringwithspaces"
6.date
根据给定的格式格式化日期。
使用与PHP date()
函数(https://php.net/date)类似的格式,但有一些差异。
可用格式字符串:
7.default
如果value的计算结果为False
,则使用给定的默认值。否则,使用该值。
例如:
{{ value|default:"nothing" }}
如果value
是""
(空字符串),则输出为nothing
。
8.default_if_none
如果(且仅当)值为None
,则使用给定的默认值。否则,使用该值。
请注意,如果给出空字符串,则不会使用默认值。default
如果要为空字符串回退,请使用过滤器。
例如:
{{ value|default_if_none:"nothing" }}
如果value
是None
,输出将是nothing
。
9.dictsort
获取字典列表并返回按参数中给出的键排序的列表。
例如:
{{ value|dictsort:"name" }}
如果value
是:
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
然后输出将是:
[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
您还可以执行更复杂的操作,例如:
{% for book in books|dictsort:"author.age" %}
* {{ book.title }} ({{ book.author.name }})
{% endfor %}
如果books
是:
[
{'title': '1984', 'author': {'name': 'George', 'age': 45}},
{'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}},
{'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}},
]
然后输出将是:
* Alice (Lewis)
* 1984 (George)
* Timequake (Kurt)
dictsort
也可以按__getitem__()
指定索引处的元素排序列表(或任何其他实现对象 )。例如:
{{ value|dictsort:0 }}
如果value
是:
[
('a', '42'),
('c', 'string'),
('b', 'foo'),
]
然后输出将是:
[
('a', '42'),
('b', 'foo'),
('c', 'string'),
]
您必须将索引作为整数而不是字符串传递。以下产生空输出:
{{ values|dictsort:"0" }}
12.escape
转义字符串的HTML。具体来说,它使这些替换:
<
转换为<
>
转换为>
'
(单引号)转换为'
"
(双引号)转换为"
&
转换为&
应用escape
通常具有应用于结果的自动转义的变量只会导致进行一轮转义。因此,即使在自动转义环境中也可以安全地使用此功能。如果要应用多个转义传递,请使用force_escape
过滤器。
例如,您可以escape
在autoescape
关闭时应用于字段:
{% autoescape off %}
{{ title|escape }}
{% endautoescape %}
13.escapejs
转义用于JavaScript字符串的字符。这并没有使字符串安全为HTML或JavaScript模板文字的使用,但使用模板来生成JavaScript / JSON什么时候保护你的语法错误。
例如:
{{ value|escapejs }}
如果value
是,输出将是。"testing\r\njavascript \'string"<b>escaping</b>"
"testing\\u000D\\u000Ajavascript \\u0027string\\u0022\\u003Cb\\u003Eescaping\\u003C/b\\u003E"
14.filesizeformat
格式,如一个“人类可读”的文件大小的值(即, ,等等)。'13 KB'
'4.1 MB'
'102 bytes'
例如:
{{ value|filesizeformat }}
如果value
是123456789,则输出为。117.7 MB
文件大小和SI单位
严格地说,filesizeformat
当字节大小以1024的幂(这里是这种情况)计算时,不符合推荐使用KiB,MiB,GiB等的国际单位制。相反,Django使用与更常用的名称相对应的传统单元名称(KB,MB,GB等)。
16.floatformat
如果在没有参数的情况下使用,则将浮点数舍入到一个小数位 - 但前提是要显示小数部分。例如:
如果与数字整数参数一起使用,则将数字floatformat四舍五入到多个小数位。例如:
特别有用的是传递0(零)作为参数,它将浮点数舍入为最接近的整数。
如果传递给的参数floatformat为负数,它会将数字四舍五入到多个小数位 - 但只有在显示小数部分时才会这样。例如:
使用floatformat
不带参数等效于使用floatformat
具有的参数-1
。
17.force_escape
将HTML转义应用于字符串(escape
有关详细信息,请参阅过滤器)。此过滤器立即应用并返回一个新的转义字符串。这在极少数情况下非常有用,在这种情况下,您需要多次转义或希望将其他过滤器应用于转义结果。通常,您想使用escape
过滤器。
例如,如果要捕获过滤器<p>
创建的HTML元素linebreaks
:
{% autoescape off %}
{{ body|linebreaks|force_escape }}
{% endautoescape %}
18.get_digit
给定一个整数,返回请求的数字,其中1是最右边的数字,2是第二个最右边的数字,等等。返回无效输入的原始值(如果输入或参数不是整数,或者如果参数小于1)。否则,输出始终为整数。
例如:
{{ value|get_digit:"2" }}
如果value
是123456789
,输出将是8
。
19.iriencode
将IRI(国际化资源标识符)转换为适合包含在URL中的字符串。如果您尝试在URL中使用包含非ASCII字符的字符串,则必须执行此操作。
在已经通过urlencode
过滤器的字符串上使用此过滤器是安全的 。
例如:
{{ value|iriencode }}
如果value
是"?test=1&me=2"
,输出将是"?test=1&me=2"
。
20.join
使用字符串连接列表,如Python str.join(list)
例如:
{{ value|join:" // " }}
如果value
是列表,则输出将是字符串 。['a', 'b', 'c']
"a // b // c"
22.length
返回值的长度。这适用于字符串和列表。
例如:
{{ value|length }}
如果value
是或,输出将是 。['a', 'b', 'c', 'd']
"abcd"
4
过滤器返回0
未定义的变量。
23.length_is
返回True
如果值的长度为参数,或False
以其他方式。
例如:
{{ value|length_is:"4" }}
如果value
是或,输出将是 。['a', 'b', 'c', 'd']
"abcd"
True
24.linebreaks
用适当的HTML替换纯文本中的换行符; 单个换行符成为HTML换行符(),后面跟空行的换行符成为段落符号()。<br />
</p>
例如:
{{ value|linebreaks }}
如果value
是,输出将是。Joel\nis a slug
<p>Joel<br />is a slug</p>
25.linebreaksbr
将一段纯文本中的所有换行转换为HTML换行符()。<br />
例如:
{{ value|linebreaksbr }}
如果value
是,输出将是。Joel\nis a slug
Joel<br />is a slug
26.linenumbers
显示带行号的文本。
例如:
{{ value|linenumbers }}
如果value
是:
one
two
three
输出将是:
1. one
2. two
3. three
28.lower
将字符串转换为全部小写。
例如:
{{ value|lower }}
如果value
是,输出将是 。Totally LOVING this Album!
totally loving this album!
29.make_list
返回变为列表的值。对于字符串,它是一个字符列表。对于整数,在创建列表之前将参数强制转换为字符串。
例如:
{{ value|make_list }}
如果value
是字符串"Joel"
,则输出将是列表 。如果是,输出将是列表。['J', 'o', 'e','l']
value
123
['1', '2', '3']
30.phone2numeric
将电话号码(可能包含字母)转换为其等效数字。
输入不必是有效的电话号码。这将很乐意转换任何字符串。
例如:
{{ value|phone2numeric }}
如果value
是800-COLLECT
,输出将是800-2655328
。
31.pluralize
如果值不是1,则返回复数后缀。默认情况下,此后缀为 's'
。
例:
You have {{ num_messages }} message{{ num_messages|pluralize }}.
如果num_messages
是1
,输出将是 如果是 输出将是You have 1 message.
num_messages
2
You have 2messages.
对于需要后缀以外的单词's'
,您可以提供备用后缀作为过滤器的参数。
例:
You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.
对于不通过简单后缀复数的单词,您可以指定单数和复数后缀,用逗号分隔。
例:
You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.
注意
使用blocktrans
变复数翻译的字符串。
32.pprint
一个包装pprint.pprint()
- 用于调试,真的。
36.safeseq
将safe
过滤器应用于序列的每个元素。与在序列上运行的其他过滤器结合使用,例如 join
。例如:
{{ some_list|safeseq|join:", " }}
safe
在这种情况下,您无法直接使用过滤器,因为它首先将变量转换为字符串,而不是使用序列的各个元素。
37.slice
返回列表的切片。
使用与Python列表切片相同的语法。有关 介绍,请参见 http://www.diveintopython3.net/native-datatypes.html#slicinglists。
例:
{{ some_list|slice:":2" }}
如果some_list
是,输出将是。['a', 'b', 'c']
['a', 'b']
38.slugify
转换为ASCII。将空格转换为连字符。删除不是字母数字,下划线或连字符的字符。转换为小写。还剥去前导和尾随空格。
例如:
{{ value|slugify }}
如果value
是,输出将是。"Joel is a slug"
"joel-is-a-slug"
39.stringformat
根据参数(字符串格式说明符)格式化变量。此说明符使用printf样式的字符串格式语法,但删除前导“%”除外。
例如:
{{ value|stringformat:"E" }}
如果value
是10
,输出将是1.000000E+01
。