Django 模板标签(过滤器)
文章对应的B站视频:https://www.bilibili.com/video/BV1Tu41127Ca/
Django系列文章对应的目录:https://www.cnblogs.com/emanlee/p/15860241.html
过滤器
用在模板文件(如 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}}
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='https://www.cnblogs.com/emanlee/'>点击跳转</a>"
return render(request, "mytemp.html", {"views_str": views_str})
mysite456/templates/mytemp.html 文件代码:
{{ views_str|safe }}
再访问访问 http://127.0.0.1:8003/mytemp/,可以看到页面:
继续阅读,请看总目录:
Django系列文章对应的目录:https://www.cnblogs.com/emanlee/p/15860241.html
REF
https://www.runoob.com/django/django-template.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2021-01-28 pip 安装turtle
2019-01-28 Shell 基础知识和总结
2019-01-28 centos7 mail
2015-01-28 数据框排序 data.frame order
2014-01-28 MySQL常用命令
2010-01-28 Data is Null. This method or property cannot be called on Null values.
2008-01-28 SQL Server 字符串函数速查