Django内置模版过滤器

Django内置过滤器总览

可以查询下表来总览Django的内置过滤器:

过滤器 说明
add 加法
addslashes 添加斜杠
capfirst 首字母大写
center 文本居中
cut 切除字符
date 日期格式化
default 设置默认值
default_if_none 为None设置默认值
dictsort 字典排序
dictsortreversed 字典反向排序
divisibleby 整除判断
escape 转义
escapejs 转义js代码
filesizeformat 文件尺寸人性化显示
first 第一个元素
floatformat 浮点数格式化
force_escape 强制立刻转义
get_digit 获取数字
iriencode 转换IRI
join 字符列表链接
last 最后一个
length 长度
length_is 长度等于
linebreaks 行转换
linebreaksbr 行转换
linenumbers 行号
ljust 左对齐
lower 小写
make_list 分割成字符列表
phone2numeric 电话号码
pluralize 复数形式
pprint 调试
random 随机获取
rjust 右对齐
safe 安全确认
safeseq 列表安全确认
slice 切片
slugify 转换成ASCII
stringformat 字符串格式化
striptags 去除HTML中的标签
time 时间格式化
timesince 从何时开始
timeuntil 到何时多久
title 所有单词首字母大写
truncatechars 截断字符
truncatechars_html 截断字符
truncatewords 截断单词
truncatewords_html 截断单词
unordered_list 无序列表
upper 大写
urlencode 转义url
urlize url转成可点击的链接
urlizetrunc urlize的截断方式
wordcount 单词计数
wordwrap 单词包裹
yesno 将True,False和None,映射成字符串‘yes’,‘no’,‘maybe’

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

目前只能为过滤器最多提供一个参数!

1. 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].

2. addslashes

在引号前面加上斜杆。常用于在CSV中转义字符串。像这样:

{{ value|addslashes }}

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

3. capfirst

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

{{ value|capfirst }}

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

4. center

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

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

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

5. cut

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

{{ value|cut:" " }}

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

6. date

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

可用的格式字符串:

格式化字符 描述 示例输出
a ‘a.m.‘或‘p.m.‘ ‘a.m.‘
A ‘AM‘或‘PM‘ ‘AM‘
b 月份,文字形式,3个字母,小写。 “jan”
B 未实现。  
c ISO 8601格式 2008-01-02T10:30:00.000123+02:00
d 月的日子,带前导零的2位数字。 ‘01‘到‘31‘
D 周几的文字表述形式,3个字母。 ‘Fri‘
e 时区名称 ‘‘,‘GMT‘,‘-500‘,‘US/Eastern‘等
E 月份,分地区。  
f 时间 ‘1‘,‘1:30‘
F 月,文字形式。 ‘January‘
g 12小时格式,无前导零。 ‘1‘到‘12‘
G 24小时格式,无前导零。 ‘0‘到‘23‘
h 12小时格式。 ‘01‘到‘12‘
H 24小时格式。 ‘00‘到‘23‘
i 分钟 ‘00‘到‘59‘
I 夏令时间,无论是否生效。 ‘1‘或‘0‘
j 没有前导零的月份的日子。 ‘1‘到‘31‘
l 星期几,完整英文名 ‘Friday‘
L 布尔值是否是一个闰年。 True或False
m 月,2位数字带前导零。 ‘01‘到‘12‘
M 月,文字,3个字母。 “Jan”
n 月无前导零。 ‘1‘到‘12‘
N 美联社风格的月份缩写。 ‘Jan.‘,‘Feb.‘,‘March‘,‘May‘
o ISO-8601周编号 ‘1999‘
O 与格林威治时间的差,单位小时。 ‘+0200‘
P 时间为12小时 ‘1 am‘,‘1:30 pm‘,‘midnight‘,‘noon‘,‘12:30 pm‘>
r RFC 5322格式化日期。 ‘Thu, 21 Dec 2000 16:01:07 +0200‘
s 秒,带前导零的2位数字。 ‘00‘到‘59‘
S 一个月的英文序数后缀,2个字符。 ‘st‘,‘nd‘,‘rd‘或‘th‘
t 给定月份的天数。 28 to 31
T 本机的时区。 ‘EST‘,‘MDT‘
u 微秒。 000000 to 999999
U 自Unix Epoch以来的秒数(1970年1月1日00:00:00 UTC)。  
w 星期几,数字无前导零。 ‘0‘(星期日)至‘6‘(星期六)
W ISO-8601周数,周数从星期一开始。 1,53
y 年份,2位数字。 ‘99‘
Y 年,4位数。 ‘1999‘
z 一年中的日子 0到365
Z 时区偏移量,单位为秒。 -43200到43200

范例:

{{ 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" }}

7. default

为变量提供一个默认值。

{{ value|default:"nothing" }}

8. default_if_none

如果(且仅当)value为None,则使用给定的默认值。

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

{{ value|dictsort:0 }}

如果value为:

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

那么输出将是:

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

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

{{ values|dictsort:"0" }}

10. dictsortreversed

前面过滤器的反序功能。

11. divisibleby

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

{{ value|divisibleby:"3" }}

如果value是21,则输出True。

12. escape

转义字符串的HTML。

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

13. escapejs

转义用于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。

15. first

返回列表中的第一项。

{{ value|first }}

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

16. 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

17. force_escape

立即转义HTML字符串。

18. get_digit

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

{{ value|get_digit:"2" }}

如果value为123456789,则输出8。

19. iriencode

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

{{ value|iriencode }}

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

20. join

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

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

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

21. last

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

{{ value|last }}

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

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

{{ value|linebreaks }}

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

25. linebreaksbr

替换纯文本中的换行符为<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

27. ljust

给定宽度下左对齐。

"{{ value|ljust:"10" }}"

如果value为Django,则输出为Django

28. lower

将字符串转换为全部小写。

{{ value|lower }}

29. make_list

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

{{ 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 2 messages

另外如果需要的不是‘s‘后缀的话, 可以提供一个备选的参数给过滤器:

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

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

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

32. pprint

用于调试的过滤器。

33. random

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

{{ value|random }}

34. rjust

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

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

35. safe

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

36. safeseq

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

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

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

37. slice

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

{{ 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

根据参数,格式化变量。

{{ value|stringformat:"E" }}

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

40. striptags

尽可能的去除HTML中的标签。

{{ value|striptags }}

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

41. time

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

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

如果value等于datetime.datetime.now(),则输出字符串01:23

time过滤器只接受格式字符串中与时间相关的参数,而不是日期。如果需要格式化date值,请改用date过滤器。

42. timesince

将日期格式设为自该日期起的时间(例如,“4天,6小时”)。

采用一个可选参数,它是一个包含用作比较点的日期的变量。例如,如果blog_date是表示2006年6月1日午夜的日期实例,并且comment_date是2006年6月1日08:00,则以下将返回“8 hours”:

{{ blog_date|timesince:comment_date }}

43. 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 }}

44. title

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

{{ value|title }}

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

45. truncatechars

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

{{ value|truncatechars:9 }}

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

46. truncatechars_html

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

{{ value|truncatechars_html:9 }}

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

47. truncatewords

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

{{ value|truncatewords:2 }}

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

字符串中的换行符将被删除。

48. truncatewords_html

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

{{ value|truncatewords_html:2 }}

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

49. unordered_list

接收一个嵌套的列表,返回一个HTML的无序列表,但不包含开始和结束的<ul>标签。

例如,如果var 包含[‘States‘, [‘Kansas‘, [‘Lawrence‘, ‘Topeka‘], ‘Illinois‘]], 那么{{ var|unordered_list }}将返回:

<li>States
<ul>
        <li>Kansas
        <ul>
                <li>Lawrence</li>
                <li>Topeka</li>
        </ul>
        </li>
        <li>Illinois</li>
</ul>
</li>

50. upper

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

{{ value|upper }}

51. urlencode

转义要在URL中使用的值。

{{ value|urlencode }}

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

52. 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 [email protected],输出将是Send questions to <a href="mailto:[email protected]">[email protected]</a>

53. 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一样,此过滤器应仅应用于纯文本。

54. wordcount

返回单词的个数。

{{ value|wordcount }}

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

55. wordwrap

以指定的行长度,换行单词。

{{ value|wordwrap:5 }}

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

Joel
is a
slug

56. yesno

将True,False和None,映射成字符串‘yes’,‘no’,‘maybe’。

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

国际化标签和过滤器

Django还提供了一些模板标签和过滤器,用以控制模板中国际化的每个方面。它们允许对翻译,格式化和时区转换进行粒度控制。

1. i18n

此标签允许在模板中指定可翻译文本。要启用它,请将USE_I18N设置为True,然后加载{% load i18n %}

2. l10n

此标签提供对模板的本地化控制,只需要使用{% load l10n %}。通常将USE_L10N设置为True,以便本地化默认处于活动状态。

3. tz

此标签对模板中的时区进行控制。 像l10n,只需要使用{% load tz },但通常还会将USE_TZ设置为True,以便默认情况下转换为本地时间。

其他标签和过滤器库

Django附带了一些其他模板标签,必须在INSTALLED_APPS设置中显式启用,并在模板中启用{% load %}标记。

1. django.contrib.humanize

一组Django模板过滤器,用于向数据添加“人性化”,更加可读。

2. static

static标签用于链接保存在STATIC_ROOT中的静态文件。例如:

{% load static %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />

还可以使用变量:

{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen" />

还可以像下面这么使用:

{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>

原文地址:https://www.cnblogs.com/navysummer/p/10200225.html

时间: 2024-09-27 12:02:11

Django内置模版过滤器的相关文章

Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. 本文完整项目文件代码下载地址:完整示例 Django完整内置过滤器帮助文档:Django内置过滤器完整版 参考文献:Django 中文文档 1.8 内置过滤器 注意:所有带参数的过滤器,在使用时,冒号:和参数中间不能有空格. add加 功能: 把add后的参数num加给value: 数字相加会进行算

Django内置模板标签

Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cycle 循环对象的值 debug 调试模式 extends 继承模版 filter 过滤功能 firstof 输出第一个不为False的参数 for 循环对象 for … empty 带empty说明的循环 if 条件判断 ifequal 如果等于 ifnotequal 如果不等于 ifchange

Django内建模版标签和过滤器

第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地加入的. 对于提供的标签和过滤器,最好的参考就是直接进入你的管理界面.Django的管理界面包含了一份针对当前站点的所有标签和过滤器的完整参考.想看到它的话,进入你的管理界面,单击右上角的Documentation(文档)链接. 内建文档中的“标签和过滤器”小节阐述了所有内建标签(事实上,本附录中的

Django内置Admin

Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttypes django.contrib.messages django.contrib.sessions 模板的context_processors: django.contrib.auth.context_processors.auth django.contrib.messages.context_

django 内置 admin

Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件使用方式有 依赖APP         django.contrib.auth         django.contrib.contenttypes         django.contrib.messages         django.contrib.sessions     模板的context_processors         django.contrib.auth.context_processo

Django内置重置密码的功能(发邮箱)

首先我们要想用Django内置的重置密码的功能,我们要知道Django内置的函数是怎么写的 def password_reset(request, template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.

Spring Cloud Gateway 内置的过滤器工厂

本文基于Spring Cloud Greenwich SR2 [TOC] 内置的过滤器工厂 这里简单将Spring Cloud Gateway内置的所有过滤器工厂整理成了一张表格,虽然不是很详细,但能作为速览使用.如下: 过滤器工厂 作用 参数 AddRequestHeader 为原始请求添加Header Header的名称及值 AddRequestParameter 为原始请求添加请求参数 参数名称及值 AddResponseHeader 为原始响应添加Header Header的名称及值 D

Elasticsearch的分析过程,内置字符过滤器、分析器、分词器、分词过滤器(真是变态多啊!美滋滋)

分析过程 当数据被发送到elasticsearch后并加入倒排序索引之前,elasticsearch会对文档进行处理: 字符过滤:使用字符过滤器转变字符. 文本切分为分词:将文本(档)分为单个或多个分词. 分词过滤:使用分词过滤器转变每个分词. 分词索引:最终将分词存储在Lucene倒排索引中. 整体流程: 目的是达到人性化的分词 内置字符过滤器 HTML字符过滤器.映射字符过滤器.模式替换过滤器 HTML字符过滤器 POST _analyze { "tokenizer": "

django 内置“信号”机制和自定义方法

一.引子 在操作数据的时候,假设我们需要记录一些日志,这个时候,我们需要用什么来显示这个需求呢?装饰器?装饰器只能先实现整体的操作.在django 里面有这么一个东西--信号 下面我们就来了解了解它. 操作对象前后,django都会预留两个钩子,它是用signals.post_save.send,表示触发一个信号.所以比如说我们在操作数据库的时候,要在插入数据之前写入日志,插入完成之后也写入日志,那这个就会用到我们今天的django信号.Django中提供了“信号调度”,用于在框架执行操作时解耦