Python中的过滤器add、cut、date、join、length、lower、upper、random、safe、slice、truncatechars、truncatechars_html

在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...-->
始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
原文地址:https://www.cnblogs.com/guyan-2020/p/12201524.html