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

如果为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:"20"}}
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 | time:"H:i"}}

7.default

为变量提供一个默认值。

{{value | deafult:"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)

ictsort也可以按指定索引对多维列表进行排序,像这样:

{{ value|dictsort:0 }}

如果value为:

[
    ('a', '42'),
    ('c', 'string'),
    ('b', 'foo'),
]
那么结果将是:
[
    ('a', '42'),
    ('b', 'foo'),
    ('c', 'string'),
]

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

{{ values|dictsort:"0" }}

10. dictsortreversed

前面过滤器的反序功能。

11. divisibleby

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

{{ value|divisibleby:"3" }}

如果参数是21,返回True。

12. escape

猜你喜欢

转载自www.cnblogs.com/liushui0306/p/12895872.html