Django过滤器
add过滤器:将字符串和字母、整数链接(若为字符串会转化为整数形式)
注:若是一个字母字符串和一个数字进行链接会输出空
{{ 1|add:2 }}返回一个3
{{ "2"|add:3 }}返回一个5
{{ "a"|add:3 }}#返回一个空
cut过滤器 移除指定的字符串注:后面的参数必须是字符串的形式
{{ "hello world"|cut:" " }}#移除了hello world 里的所有空格 结果为 helloworld
{{ "hello world"|cut:"e" }}#结果为hllo world 移除了e
{{ 123456|cut:1 }}#会报错 是因为参数不是字符串的形式 不管前面所要移除的对象是否为整数 参数必须是字符串的形式
data过滤器--过滤时间的过滤器(要用到datetime模块)
{{ time|date:"Y-m-g" }}#后面的参数必须要加引号 会显示出时间年月时分
first过滤器和last过滤器--输出列表/元组/字符串中的第一个 /最后一个值(不能传参数)
且元祖列表都要提前定义(只输入变量名)
#name:["ll","ww","ee"]
{{ name|first }}#输出li
{{ name|last }}#输出ee
{{ "15784"|first }}#字符串 输出1
floatformat过滤器--将浮点数保留小数 不传如参数就是默认保留一位(只看小数点后两位)
且正数和负数方式一样
{{ 1.41|floatformat }}#输出1.4
{{ 1.545|floatformat }}#输出1.5(只看小数点后两位等同于1.54)
{{ -1.05|floatformat }}#输出-1.1
{{ 1.247|floatformat:2 }}#输出1.25
join过滤器 在中间加一些特殊符号 类似于python的join(可以在列表,元祖操作)
{{ "hello"|join:"*" }}#输出h*e*l*l*o
{{ name|join:"-" }}
length过滤器 获取字符串、元祖、列表的长度(没有参数)
{{ "1515"|length }}#输出4
upper/lower过滤器 将字母改成大/小写(没有参数)
{{ "woaini"|upper }}#输出WOAINI
{{ "DEFRT"|lower }}#输出defrt
random过滤器 随机抽取列表、元祖、字符串中的随机一个数,类似于python中的random模块
{{ name|random }}#随机在这个里面输出一个值
safe过滤器 关闭字符串自动转义 就是传入的值里面没有任何特殊字符就会原样输出 若有就会转义输出(列入<br>),且python中的特殊字符无法识别
#"style": "abcdef<br>adasds"
{{ style|safe }}#会输出abcdef
adasds
#"style": "woaini"
{{ style|safe }}#会输出woaini(原样输出)
slice过滤器 类似于python的slice 切片(对字符串、元祖、列表操作)
{{ "woaini"|slice:"2" }}#输出wo(默认是从第0位开始到第2位结束,且不包含第二位)
{{ "woshini"|slice:"2:5" }}#输出shi
striptags过滤器 删除字符串中的html标签(前面的参数){{ value|striptags }} 中的value中的html标签(没有参数)
{{ style|striptags }}#输出一个不带有html标签的(style里有h1标签就会删除原样输出)
truncatechars过滤器 如果给定的字符串长度超过了过滤器指定的长度。那么就会进行切割,并且会拼接三个点来作为省略号
{{ "woaini"|truncatechars:5 }}#输出wo...本应输出woain但要用三个省略号作为末尾,所以就要输出wo...
{{ "woaini"|truncatechars:6 }}#输出woaini 字符串长度和过滤器指定长度相同 原样输出
注意:若value中带有html标签 不会自动转义 会自主输出
#"style": "<h1>abcdefadasds</h1>"
{{ style|truncatechars:6 }}#输出<h1..
truncatechars_html过滤器 和truncatechars过滤器类似只是不会切割html标签(输出的结果类似)
#"style": "<h1>abcdefadasds</h1>"
{{ style|truncatechars_html:5}}#输出<h1>ab...</h1>
default过滤器: 使用方式'{{ value | default('默认值')}}'。如果Value 这个‘key’不存在,那么就会使用‘default’过滤器提供的默认值。
如果你想使用类似于‘python’中判断某个值是否为false(例如:none,空字符串、空列表、空字典),
那么就必须传递另外一个参数‘{{value | default ('默认值',boolean = True)}}’
{{ "nlll"|default:"noneddd" }}#输出nlll 后面的值是False 就会输出value上写的值
default_if_none过滤器 只有值是none是才会用default_if_none提供的默认值 和default的关系是default包含defaul_if_none过滤器
{{ "nonon"|default_if_none:"1" }}#输出的值为nonon
自定义过滤器
自定义过滤器的步骤:
首先在某个app中,创建一个python包,叫做templatetags,注意,这个包的名字必须为templatetags,不然就找不到。
在这个templatetags包下面,创建一个python文件用来存储过滤器。
在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数永远是被过滤的那个值,并且如果在使用过滤器的时候传递参数,那么还可以定义另外一个参数。但是过滤器最多只能有2个参数。
在写完过滤器(函数)后,要使用django.template.Library.filter进行注册,文件my_filter.py。
from django import template
register = template.Library()
def greet(value,word):
return value + word
register.filter("greet",greet)
还要把这个过滤器所在的这个app添加到settings.INSTALLED_AAPS中,不然Django也找不到这个过滤器。
在模板中使用load标签加载过滤器所在的python包。(文件index.html)
{% load my_filter %}
可以使用过滤器了。