来源:刘江的博客及教程

为模版过滤器提供参数的方式是:过滤器后加个冒号,再紧跟参数,中间不能有空格。
目前只能为过滤器最多提供一个参数!

add:把add后的参数加给value

{{ value|add:"2" }}

如果value为 4,则会输出6.
过滤器首先会强制把两个值转换成Int类型。如果强制转换失败, 它会试图使用各种方式把两个值相加。

{{ first|add:second }}

如果first是[1, 2, 3],second是[4, 5, 6], 将会输出[1, 2, 3, 4, 5, 6].

addslashes:在引号前面加上斜杆

常用于在CSV中转义字符串。像这样:

{{ value|addslashes }}

如果value是"I'm using Django", 输出将变成 "I\'m using Django".

capfirst:大写变量的第一个字母

如果第一个字符不是字母,该过滤器将不会生效。

{{ value|capfirst }}

如果value是"django", 输出将变成"Django"。

center:在给定的宽度范围内居中.

"{{ value|center:"15" }}"

如果value是"Django",输出将是Django。

cut:移除value中所有的与给定参数相同的字符串

{{ value|cut:" " }}

如果value为“String with spaces”,输出将为"Stringwithspaces"。

date:根据给定格式对一个日期变量进行格式化

可用的格式字符串:

范例:

{{ value|date:"D d M Y" }}

如果value是一个datetime对象,比如datetime.datetime.now(),输出将是字符串'Wed 09 Jan 2008'。
可以将date与time过滤器结合使用,以呈现datetime值的完整表示形式。 例如。:

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

default:为变量提供一个默认值

{{ value|default:"nothing" }}

default_if_none:value为None才使用默认值

{{ value|default_if_none:"nothing" }}

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也可以按指定索引对多维列表进行排序,像这样:

{{ value|dictsort:0 }}

如果value为:

[
    ('a', '42'),
    ('c', 'string'),
    ('b', 'foo'),
]

那么输出将是:

[
    ('a', '42'),
    ('b', 'foo'),
    ('c', 'string'),
]

必须提供整数索引,不能是字符串。 以下产生空输出:

{{ values|dictsort:"0" }}

dictsortreversed:dictsort过滤器的反序功能

dictsort过滤器的反序功能。

divisibleby:计算value是否能整除

如果value可以被参数整除,则返回True。

{{ value|divisibleby:"3" }}

如果value是21,则输出True。

escape:转义字符串的HTML

转义仅在字符串输出时应用,因此在链接的过滤器序列中escape的位置无关紧要,就像它是最后一个过滤器。 如果要立即应用转义,请使用force_escape过滤器。

escapejs:转义用于JavaScript字符串的字符

确保在使用模板生成JavaScript / JSON时避免语法错误。

{{ value|escapejs }}

如果value为testing\r\njavascript \'string" <b>escaping</b>,输出将为testing\\u000D\\u000Ajavascript \\u0027string\\u0## \\u003Cb\\u003Eescaping\\u003C/b\\u003E

filesizeformat:格式化为直观的文件大小形式

格式化为直观的文件大小形式(即'13 KB', '4.1 MB', '102 bytes'等)。

{{ value|filesizeformat }}

如果value为123456789,输出将是117.7 MB。

first:返回列表list的第一项

{{ value|first }}

如果value是列表['a', 'b', 'c'] ,输出将为'a'。

floatformat:处理小数位数

当不使用参数时,将浮点数舍入到小数点后一位,但前提是要显示小数部分。 像这样:

value           模板语法                输出
34.23234    {{ value | floatformat }}   34.2
34.00000    {{ value | floatformat }}   34
34.26000    {{ value | floatformat }}   34.3

如果与数字整数参数一起使用,将数字四舍五入为小数位数。 像这样:

value           模板语法                输出
34.23234    {{ value | floatformat:3 }} 34.232
34.00000    {{ value | floatformat:3 }} 34.000
34.26000    {{ value | floatformat:3 }} 34.260

特别有用的是传递0(零)作为参数,它将使float浮动到最接近的整数。

value           模板语法                输出
34.23234    {{ value | floatformat:“0” }}   34
34.00000    {{ value | floatformat:“0” }}   34
39.56000    {{ value | floatformat:“0” }}   40

如果传递给floatformat的参数为负,则会将一个数字四舍五入到小数点后的位置,但前提是要显示一个小数部分。 像这样:

value           模板语法                输出
34.23234    {{ value | floatformat:“ - 3” }}    34.232
34.00000    {{ value | floatformat:“ - 3” }}    34
34.26000    {{ value | floatformat:“ - 3” }}    34.260

force_escape:立即转义HTML字符串

立即转义HTML字符串。

get_digit:给定一个整数,返回所请求的数字

给定一个整数,返回所请求的数字,1表示最右边的数字,2表示第二个最右边的数字,以此类推。

{{ value|get_digit:"2" }}

如果value为123456789,则输出8。

iriencode:将IRI转换为适合包含在URL中的字符串

将IRI(国际化资源标识符)转换为适合包含在URL中的字符串。

{{ value|iriencode }}

如果value是?test=1&me=2,输出则是?test=1&me=2。

join:使用字符串连接列表

使用字符串连接列表,类似Python的str.join(list)

{{ value|join:" // " }}

如果value是列表['a', 'b', 'c'] ,输出为a // b // c。

last:返回列表中的最后一个项

返回列表中的最后一个项目。类似first过滤器。

{{ value|last }}

length:返回对象的长度

返回对象的长度。 这适用于字符串和列表。

{{ value|length }}

如果value是['a', 'b', 'c', 'd']或"abcd",输出将为4。
对于未定义的变量,过滤器返回0。

length_is:返回对象的长度是否等于参数值

如果对象的长度等于参数值,则返回True,否则返回False。

{{ value|length_is:"4" }}

如果value是['a', 'b', 'c', 'd']或"abcd",输出将为True。

linebreaks:替换纯文本中的换行符为<p>标签

{{ value|linebreaks }}

如果value是Joel\nis a slug,输出将为<p>Joel<br />is a slug</p>

linebreaksbr:替换纯文本中的换行符为<br />标签

{{ value|linebreaksbr }}

如果value是Joel\nis a slug,输出将为Joel<br />is a slug

linenumbers:显示带行号的文本

{{ value|linenumbers }}

如果value为:

one
two
three

输出将是:

1. one
2. two
3. three

ljust:给定宽度下左对齐。

{{ value|ljust:"10" }}

如果value为Django,则输出为Django。

lower:将字符串转换为全部小写

{{ value|lower }}

make_list:将对象转换为字符的列表

将对象转换为字符的列表。对于字符串,直接拆分为单个字符的列表。对于整数,在创建列表之前将参数强制转换为unicode字符串。

{{ value|make_list }}

如果value是字符串"Joel",输出将是列表['J', 'o' , 'e', 'l']。
如果value为123,输出为列表['1', '2', '3']。

phone2numeric:将电话号码转换为其等效数字

{{ value|phone2numeric }}

如果value为800-COLLECT,输出将为800-2655328。

pluralize:如果值不是1,则返回一个复数形式

如果值不是1,则返回一个复数形式,通常在后面添加's'表示。
例如:

You have {{ num_messages }} message{{ num_messages|pluralize }}.

如果num_messages是1,则输出为You have 1 message。 如果num_messages是2,输出为You have 2 messages。
另外如果需要的不是's'后缀的话, 可以提供一个备选的参数给过滤器:

You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.

对于非一般形式的复数,可以同时指定单复数形式,用逗号隔开。例如:

You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.

pprint:用于调试的过滤器

用于调试的过滤器。

random:返回给定列表中的随机项

返回给定列表中的随机项。

{{ value|random }}

rjust:右对齐给定宽度字段中的值

右对齐给定宽度字段中的值。

"{{ value|rjust:"10" }}"

safe:将字符串标记为安全,不需要转义

将字符串标记为安全,不需要转义。

safeseq:

将safe过滤器应用于序列的每个元素。 与对序列进行其他过滤操作(例如join)一起使用时非常有用。

{{ some_list|safeseq|join:", " }}

在这种情况下,不能直接使用safe过滤器,因为它首先将变量转换为字符串,而不是使用序列的各个元素。

slice:返回列表的一部分

返回列表的一部分。也就是切片,与Python的列表切片相同的语法。

{{ some_list|slice:":2" }}

如果some_list是['a', 'b', 'c'] ,输出将为['a', 'b']。

slugify:转换为ASCII,空格转换为连字符

转换为ASCII。空格转换为连字符。删除不是字母数字,下划线或连字符的字符。转换为小写。还会去除前导和尾随空格。

{{ value|slugify }}

如果value是Joel is a slug,输出为joel-is-a-slug

stringformat:根据参数,格式化变量

{{ value|stringformat:"E" }}

如果value为10,输出将为1.000000E+01。

striptags:去除HTML中的标签

{{ value|striptags }}

如果value是<b>Joel</b> <button>is</button> a <span>slug</span>,输出Joel is a slug

time:格式化时间

根据给定的格式,格式化时间。给定格式可以是预定义的TIME_FORMAT,也可以是与date过滤器相同的自定义格式。

{{ value|time:"H:i" }}

如果value等于datetime.datetime.now(),则输出字符串01:23。
time过滤器只接受格式字符串中与时间相关的参数,而不是日期。如果需要格式化date值,请改用date过滤器。

timesince:时间计算

将日期格式设为自该日期起的时间(例如,“4天,6小时”)。
采用一个可选参数,它是一个包含用作比较点的日期的变量。例如,如果blog_date是表示2006年6月1日午夜的日期实例,并且comment_date是2006年6月1日08:00,则以下将返回“8 hours”:

{{ blog_date|timesince:comment_date }}

timeuntil:时间计算

类似于timesince,它测量从现在开始直到给定日期或日期时间的时间。例如,如果今天是2006年6月1日,而conference_date是2006年6月29日,则{{ conference_date | timeuntil }}将返回“4 weeks”。
可选参数是一个包含用作比较点的日期变量。如果from_date为2006年6月22日,则以下内容将返回“1 weeks”:

{{ conference_date|timeuntil:from_date }}

title:所有单词的首字母大写

将所有单词的首字母大写,其它字母小写。

{{ value|title }}

如果value为my FIRST post,输出将为My First Post

truncatechars:字符串截取字母

如果字符串包含的字符总个数多于指定的字符数量,那么会被截断掉后面的部分。截断的字符串将以“...”结尾。

{{ value|truncatechars:9 }}

如果value是Joel is a slug,输出为Joel i...

truncatechars_html:字符串截取字母

类似于truncatechars,但是会保留HTML标记。

{{ value|truncatechars_html:9 }}

如果value是<p>Joel is a slug</p>,输出<p>Joel i...</p>

truncatewords:字符串截取单词

在一定数量的字数后截断字符串。与truncatechars不同的是,这个以字的个数计数,而不是字符计数。

{{ value|truncatewords:2 }}

如果value 是Joel is a slug, 输出为Joel is ...
字符串中的换行符将被删除。

truncatewords_html:字符串截取单词

类似于truncatewords,但是保留HTML标记。

{{ value|truncatewords_html:2 }}

HTML内容中的换行符将保留。

unordered_list:接收嵌套的列表,返回HTML的无序列表

接收一个嵌套的列表,返回一个HTML的无序列表,但不包含开始和结束的<ul>标签。
例如,如果var 包含['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']], 那么{{ var|unordered_list }}将返回:

upper:将字符串转换为全部大写

将字符串转换为全部大写的形式:

{{ value|upper }}

urlencode:转义要在URL中使用的值

{{ value|urlencode }}

如果value为https://www.example.org/foo?a=b&c=d,输出https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd

urlize:将网址和电子邮件地址转换为可点击的链接

该模板标签适用于前缀为http://,https://的链接,或者www。
由urlize生成的链接会向其中添加rel="nofollow"属性。

{{ value|urlize }}

如果value是Check out www.djangoproject.com,输出Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangoproject.com</a>
除了超级链接之外,urlize也会将电子邮件地址转换为邮件地址链接。 如果value是Send questions to foo@example.com,输出将是Send questions to <a href="mailto:foo@example.com">foo@example.com</a>

urlizetrunc:将网址和电子邮件地址转换为可点击的链接

将网址和电子邮件地址转换为可点击的链接,就像urlize,但截断长度超过给定字符数限制的网址。

{{ value|urlizetrunc:15 }}

如果value是Check out www.djangoproject.com,将输出Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangopr...</a>.
与urlize一样,此过滤器应仅应用于纯文本。

wordcount:返回单词的个数

{{ value|wordcount }}

如果value是Joel is a slug,输出4。

wordwrap:以指定的行长度,换行单词

{{ value|wordwrap:5 }}

如果value是Joel is a slug,输出为:


Joel
is a
slug

yesno:将True,False和None,映射成字符串'yes','no','maybe'

{{ value|yesno:"yeah,no,maybe" }}
×