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&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 foo@example.com
,输出将是Send questions to <a href="mailto:foo@example.com">foo@example.com</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>
Django内置模版过滤器的更多相关文章
- 第三章:模版层 - 2:Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...
- Django内置模板标签
Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...
- Django内置Admin解析
Django 内置的admin是对于model中对应的数据表进行增删改查提供的组建 一.Django admin的内部依赖: 依赖的app django.contrib.auth django.con ...
- Django内置Admin
Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...
- Django内置分页
一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...
- Django 内置分页器
先导入Django内置的分页器 在商品列表页或者购物车列表页导入 在渲染list.html导入 然后在views后台渲染方法写入 打开list页面结果
- Django内置权限扩展案例
当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建 ...
- JSON和Django内置序列化
JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * J ...
随机推荐
- em和px比较
1em=16px. em具有继承性. 如果定义了 body{font-size=12px;} #title{font-siez=2.6em;} 而id=title恰好在body里面,那么,id=tit ...
- 4.keras实现-->生成式深度学习之DeepDream
DeepDream是一种艺术性的图像修改技术,它用到了卷积神经网络学到的表示,DeepDream由Google于2015年发布.这个算法与卷积神经网络过滤器可视化技术几乎相同,都是反向运行一个卷积神经 ...
- 使用nvm管理node版本时,各个版本下公用npm安装的插件问题
因为使用了NVM(node版本管理工具),所以在切换node版本的时候安装的插件不能共享使用,必须重新安装,导致不必要的工作量 所以我将npm(node包管理工具提取出来) 进行node版本之间的共享 ...
- 7.6 Models -- Finding Records
Ember Data的store为检索一个类型的records提供一个接口. 一.Retrieving a single record(检索单记录) 1. 通过type和ID使用store.findR ...
- Lintcode: Heapify && Summary: Heap
Given an integer array, heapify it into a min-heap array. For a heap array A, A[0] is the root of he ...
- 如何提取app软件的apk格式中的字体?
1.下载apk格式的指定app软件: 2.将apk格式的文件名更改为后缀名为zip格式: 3.用winrar解压软件解压,然后就找到其中的ttf格式的字体文件. 举例说明,我想找到airbnb的app ...
- ARM的Trust Zone技术
ARM的Trust_Zone技术是一个系统的Access Control的架构. 与AXI,AHB,APB其中的secure,supervisor信号相关联. 与ARM core的模式相关连,当ARM ...
- 持续集成之二:搭建SVN服务器(subversion)
安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 subversion-1.10.3.tar.gz apr-1. ...
- Scrapy: 初识Scrapy
1.初识Scrapy Scrapy是为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘,信息处理或者存储历史数据等一系列的程序中. 2.选择一个网站 当需要从某个网站获取信息时, ...
- 生成带有表格的word附件和动态赋值
生成带有表格的word附件和动态赋值, 表格前后需要添加一个特殊的开始和结束的域,表格第一列 TableStart:AuditJdcttbzInfo 和表格的最后一列 TableEnd:AuditJd ...