文章对应的B站视频:https://www.bilibili.com/video/BV1Tu41127Ca/
Django系列文章对应的目录:
过滤器
用在模板文件(如 html 文件)中。
模板语法:
{{ 变量名 | 过滤器:可选参数 }}
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符(|),如下所示:
{{ name|lower }}
{{ name }} 变量被过滤器 lower 处理后,大写转换为小写。
过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:
{{ my_list|first|upper }}
以上实例取第一个元素(或第一个字符),并且转化为大写。
有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:
{{ bio|truncatewords:"30" }}
这个将显示变量 bio 的前30个词。
其他过滤器:
- addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
- date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,实例:
{{ pub_date|date:"F j, Y" }}
- length : 返回变量的长度。
default
default 为变量提供一个默认值。
如果 views 传的变量的布尔值是 false,则使用指定的默认值。
以下值为 false:
0 0.0 False 0j "" [] () set() {} None
mysite456/mysite456/views.py 文件代码:
from django.shortcuts import render
def mydef(request):
name =0
return render(request, "mytemp.html", {"name": name})
mysite456/templates/mytemp.html 文件代码:
{{ name|default:"简单示例demo666" }}
再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
length
返回对象的长度,适用于字符串和列表。
字典返回的是键值对的数量,集合返回的是去重后的长度。
mysite456/mysite456/views.py 文件代码:
from django.shortcuts import render
def mydef(request):
name ="简单示例demo"
return render(request, "mytemp.html", {"name": name})
mysite456/templates/mytemp.html 文件代码:
{{ name|length}}
再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
filesizeformat
以更易读的方式显示文件的大小(即'13 KB', '4.1 MB', '102 bytes'等)。
字典返回的是键值对的数量,集合返回的是去重后的长度。
mysite456/mysite456/views.py 文件代码:
from django.shortcuts import render
def mydef(request):
num=1024
return render(request, "mytemp.html", {"num": num})
mysite456/templates/mytemp.html 文件代码:
{{ num|filesizeformat}}
再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
date
根据给定格式对一个日期变量进行格式化。
格式 Y-m-d H:i:s返回 年-月-日 小时:分钟:秒 的格式时间。
mysite456/mysite456/views.py 文件代码:
from django.shortcuts import render
def mydef(request):
import datetime
now =datetime.datetime.now()
return render(request, "mytemp.html", {"time": now})
mysite456/templates/mytemp.html 文件代码:
{{ time|date:"Y-m-d" }}
再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
truncatechars
如果字符串包含的字符总个数多于指定的字符数量,那么会被截断掉后面的部分。
截断的字符串将以 ... 结尾。
mysite456/mysite456/views.py 文件代码:
from django.shortcuts import render
def mydef(request):
views_str = "简单示例demo"
return render(request, "mytemp.html", {"views_str": views_str})
mysite456/templates/mytemp.html 文件代码:
{{ views_str|truncatechars:2}}
再访问访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
safe
将字符串标记为安全,不需要转义。
要保证 views.py 传过来的数据绝对安全,才能用 safe。
和后端 views.py 的 mark_safe 效果相同。
Django 会自动对 views.py 传到HTML文件中的标签语法进行转义,令其语义失效。加 safe 过滤器是告诉 Django 该数据是安全的,不必对其进行转义,可以让该数据语义生效。
mysite456/mysite456/views.py 文件代码:
from django.shortcuts import render
def mydef(request):
views_str = "<a href=''>点击跳转</a>"
return render(request, "mytemp.html", {"views_str": views_str})
mysite456/templates/mytemp.html 文件代码:
{{ views_str|safe }}
再访问访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
REF
https://www.runoob.com/django/django-template.html