在DTL模板中,不支持函数的调用形式“()”,因此不能给函数传递参数,这将有很大的局限性,而过滤器其实就是一个函数,可以对需要处理的参数进行处理,并且最多可以接收两个参数。
1.add过滤器
将传进来的参数添加到原来的值上面,这个过滤器会尝试将“值”和“参数”转换成整型,然后进行相加。如果转换成整型的过程中
views.py中代码:
from django.shortcuts import render
def greet(word):
return "Hello: %s" % word
def index(request):
context = {
"greet":greet
}
return render(request,'index.html',context=context)
def add(request):
context = {
'key1':['1','2','3'],
'key2':['4','5','6']
}
return render(request,'add.html',context=context)
add.html中代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{# 两个数字,手下转换为int型,之后进行数学上的相加,#}
{#如果而这种任何一方不能够转换为int型,就会将二者进行字符串的拼接 #}
{{ "2"|add:"3" }}
{# 在DTL模板中不能够定义列表,所以在views.py视图函数中进行定义列表,#}
{#之后使用add过滤器就可以将两个列表进行拼接成一个列表 #}
{{ key1|add:key2 }}
</body>
</html>
2.cut过滤器
移除值中所有指定的字符串,类似于python中的replace{args,' '}
views.py中代码如下:
from django.shortcuts import render
def cut(request):
context ={
'info':'I am a girl !'
}
return render(request,'cut.html',context=context)
cut.html中代码如下:
<body>
{{ info|cut:'a' }}
</body>
3.date过滤器
date过滤器中各种字符代表的含义:
格式字符串 | 描述 | 示例 |
---|---|---|
Y | 四位数字的年份 | 2018 |
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 |
i | 分钟,1-9前面有0前缀 | 00-59 |
s | 秒,1-9前面有0前缀 | 00-59 |
示例代码如下: |
views.py中代码如下:
from django.shortcuts import render
from datetime import datetime
def date(request):
context = {
'now': datetime.now()
}
return render(request,'date.html',context=context)
date.html中代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ now|date:'Y-n-d G:i:s' }}
</body>
</html>
在浏览器中显示:
4.join过滤器
类似于中的join,将列表/元组/字符串用指的字符进行拼接,可以在join过滤器之后指定分隔符,示例代码如下:
views.py中代码如下:
from django.shortcuts import render
def join(request):
context = {
'value':['python','django','flask']
}
return render(request,'join.html',context=context)
join.html中代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ value|join:"+" }}
</body>
</html>
浏览器中查看运行结果如下所示:
5.length过滤器
获取一个列表/元组/字符串/字典(python中所有可以使用len()函数的类型)的长度,示例代码如下:
join.html中代码如下:
<p>{{ value|join:"+" }}</p>
<p>{{ value|length }}</p>
在浏览器中查看获取的列表的长度:
6.lower过滤器
将值中所有的字符串全部转换成小写,示例代码如下:
{# 将value值中所有的字符全部转换成小写 #}
{{ value|lower }}
7.upper过滤器
将值中所有的字符串全部转换为大写,示例代码如下:
{# 将value值中所有的字符全部转换成大写 #}
{{ value|upper }}
浏览器中查看运行结果:
8.random过滤器
在被给的列表/字符串/元组中随机的选择一个值,示例代码如下:
views.py中代码如下:
def random(request):
context = {
'value':[1,2,3,4]
}
return render(request,'random.html',context=context)
random.html中代码如下:
{# 每一次刷新都会从value中选出一个随机值 #}
{{ value|random }}
9.safe过滤器
标记一个字符串是安全的,也会关掉这个字符串的自动转义,示例代码如下:
from django.shortcuts import render
def random(request):
context = {
'value':[1,2,3,4],
'value1':"<a href='https://wwww.baidu.com'>百度</a>"
}
return render(request,'random.html',context=context)
{# 如果value是一个不包含任何特殊字符串,比如<a>这种,那么以上代码就会把字符串正常的输入, #}
{# value值是包含html的代码,那么就可以使用safe过滤器将html代码渲染到浏览器中 #}
<p>{{ value|safe }}</p>
<p>{{ value1|safe }}</p>
{# 不关闭自动转义,进行查看 #}
<p>{{ value1 }}</p>
在浏览器中查看safe过滤器运行结果:
10.slice过滤器
类似于Python中的切片操作,但是在模板当中实现一个切片操作的话,就可以通过使用slice过滤器,示例代码如下:
views.py中代码如下:
def slice(request):
context = {
'value':['1','5','4','3']
}
return render(request,'slice.html',context=context)
slice.html中代码如下:
<body>
<!--将会把值value从2处开始进行切片-->
{{ value|slice:"2:" }}
</body>
11.stringtags过滤器
删除字符串中所有的html标签,如果value是Hello World!,就会输出Hello World!示例代码如下:
{{ value|striptags }}
12.truncatechars过滤器
如果给定的字符串长度超过了过滤器指定的长度,那么就会进行切割,并且拼接三个点作为省略号,示例代码如下:
{{ value|truncatechars:5 }}
13.truncatechars_html过滤器
类似于truncatechars,只不过是不会切割html标签,示例代码如下:
{{ value|truncatechars_html:5 }}
<!--例如-->
value:<p>欢迎来到斯坦福大学</p>
<!--如果使用truncatechars_html进行切割的话,就会返回<p>北京...</p>-->
<!--但是如果使用truncatechars进行切割的话,就会返回<p...-->