摘要
免费模板常用过滤器,处理数据前必须解析。过滤器用“|”,如“add”可将参数加到原值上。若转换失败,返回原值。
正文
Django(31)模版中常见的过滤装置
免费模板常见过滤装置
在免费模板中,有时必须对一些数据信息开展解决之后才可以应用。一般在Python
中我们都是根据涵数的方式来进行的。而在免费模板中,则是根据过滤装置来完成的。过滤装置应用的是|来应用。
add
将传进去的主要参数加上到原先的值上边。这一过滤装置会试着将值和主要参数转化成整形美容随后开展求和。假如转化成整形美容全过程中失败了,那麼会将值和主要参数开展拼凑。如果是字符串数组,那麼会拼凑成字符串数组,如果是目录,那麼会拼凑成一个目录。实例编码以下:
{{ value|add:"2" }}
假如value
是相当于4,那麼結果将是6。假如value是相当于一个一般的字符串数组,例如abc
,那麼結果将是abc2
。add过滤装置的源码以下:
def add(value, arg):
"""Add the arg to the value."""
try:
return int(value) int(arg)
except (ValueError, TypeError):
try:
return value arg
except Exception:
return ''
cut
清除值中全部特定的字符串数组。类似python
中的replace(args,"")
。实例编码以下:
{{ value|cut:" " }}
之上实例可能清除value
中全部的空格字符。cut过滤装置的源码以下:
def cut(value, arg):
"""Remove all values of arg from the given string."""
safe = isinstance(value, SafeData)
value = value.replace(arg, '')
if safe and arg != ';':
return mark_safe(value)
return value
date
将一个日期依照特定的文件格式,恢复出厂设置成字符串数组。实例编码以下:
# 数据信息
context = {
"birthday": datetime.now()
}
# 免费模板
{{ birthday|date:"Y/m/d" }}
那麼可能輸出2018/02/01
。在其中Y意味着的是四位数据的年代,m意味着的是俩位数据的月份,d意味着的是俩位数据的日。
也有大量时间格式化的方法。见下表。
文件格式标识符 | 叙述 | 实例 |
---|---|---|
Y | 四位数据的年代 | 2020 |
m | 俩位数据的月份 | 01-12 |
n | 月份,1-9前边沒有0作为前缀 | 1-12 |
d | 俩位数据的天 | 01-31 |
j | 天,但是1-9前边沒有0作为前缀 | 1-31 |
g | 钟头,12小时文件格式的,1-9前边沒有0作为前缀 | 1-12 |
h | 钟头,12小时文件格式的,1-9前边有0作为前缀 | 01-12 |
G | 钟头,24小时文件格式的,1-9前边沒有0作为前缀 | 1-23 |
H | 钟头,24小时文件格式的,1-9前边有0作为前缀 | 01-23 |
i | 分鐘,1-9前边有0作为前缀 | 00-59 |
s | 秒,1-9前边有0作为前缀 | 00-59 |
default
假如值被评定为False
。例如[]
,""
,None
,{}
等这种在if
分辨中为False
的值,都是会应用default
过滤装置给予的初始值。实例编码以下:
{{ value|default:"nothing" }}
假如value
是相当于一个空的字符串数组。例如""
,那麼之上编码可能輸出nothing
。
default_if_none
假如值是None
,那麼可能应用default_if_none
给予的初始值。这一和default
有差别,default
是全部被评定为False
的都是会应用初始值。而default_if_none
则仅有这一值是相当于None
的情况下才会应用初始值。实例编码以下:
{{ value|default_if_none:"nothing" }}
假如value
是相当于""
也即空字符串,那麼之上会輸出空字符串。假如value
是一个None
值,之上编码才会輸出nothing
。
first
返回列表/元组/字符串数组中的第一个原素。实例编码以下:
{{ value|first }}
假如value是相当于['a','b','c']
,那麼輸出可能是a。
last
返回列表/元组/字符串数组中的最后一个原素。实例编码以下:
{{ value|last }}
假如value
是相当于['a','b','c']
,那麼輸出可能是c。
floatformat
应用四舍五入的方法恢复出厂设置一个浮点数种类。假如这一过滤装置沒有传送一切主要参数。那麼总是在小数位后保存一个小数,假如小数后边全是0,那麼总是保留整数。自然还可以传送一个主要参数,标志实际要保存好多个小数。
- 要是没有传送主要参数:
value | 免费模板编码 | 輸出 |
---|---|---|
34.23234 | {{ value|floatformat }} | 34.2 |
34.000 | {{ value|floatformat }} | 34 |
34.260 | {{ value|floatformat }} | 34.3 |
- 假如传送主要参数:
value | 免费模板编码 | 輸出 |
---|---|---|
34.23234 | {{ value|floatformat:3 }} | 34.232 |
34.000 | {{ value|floatformat:3 }} | 34.000 |
34.26000 | {{ value|floatformat:3 }} | 34.260 |
join
相近与Python
中的join
,将目录/元组/字符串数组用特定的标识符开展拼凑。实例编码以下:
{{ value|join:"/" }}
假如value
是相当于['a','b','c']
,那麼之上编码将輸出a/b/c。
length
获得一个目录/元组/字符串数组/词典的长短。实例编码以下:
{{ value|length }}
假如value
是相当于['a','b','c']
,那麼之上编码将輸出3。假如value
为None
,那麼之上将回到0。
lower
将值中全部的标识符所有转化成小写字母。实例编码以下:
{{ value|lower }}
假如value
是相当于Hello World
。那麼之上编码将輸出hello world
。
upper
类似lower,只不过将特定的字符串数组所有转化成英文大写。
random
在被给的目录/字符串数组/元组中任意的挑选一个值。实例编码以下:
{{ value|random }}
假如value
是相当于['a','b','c']
,那麼之上编码会在目录中任意挑选一个。
safe
标识一个字符串数组是安全性的。也即会关闭这一字符串数组的全自动转义。实例编码以下:
{{value|safe}}
假如value
是一个不包含一切特殊符号的字符串数组,例如<a>
这类,那麼之上编码便会把字符串数组一切正常的键入。假如value
是一串html
编码,那麼之上编码可能把这个html
编码3D渲染到电脑浏览器中。
slice
类似Python
中的切成片实际操作。实例编码以下:
{{ some_list|slice:"2:" }}
之上编码可能给some_list
从4开始做切成片实际操作。
stringtags
删掉字符串数组中全部的html
标识。实例编码以下:
{{ value|striptags }}
假如value
是<strong>hello world</strong>
,那麼之上编码可能輸出hello world
。
truncatechars
假如给出的数组长度超出了过滤装置特定的长短。那麼便会开展激光切割,而且会拼凑三个点来做为句号。实例编码以下:
{{ value|truncatechars:5 }}
假如value
是相当于北京欢迎您~,那麼輸出的結果是北京市…。很有可能你能想,为何不容易北京欢迎您…呢。由于三个点也占了三个标识符,因此 北京市 三个点的字符长度便是5。
truncatechars_html
类似truncatechars
,只不过不容易激光切割html
标识。实例编码以下:
{{ value|truncatechars:5 }}
假如value
是相当于<p>北京欢迎您~</p>
,那麼輸出将是<p>北京市...</p>。
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0