Django模板之模板变量过滤器
在Django的模板语言中,通过使用 过滤器 来改变变量的显示;Django的模板语言中提供了大约六十个内置过滤器。
过滤器规则:
· 过滤器的语法: {{ value|filter_name:参数 }}
· 使用管道符"|"来应用过滤器。
注意事项:
a. 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
b. 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
c. 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}
d. '|'左右没有空格 在Django的模板语言中,通过使用 过滤器 来改变变量的显示;Django的模板语言中提供了大约六十个内置过滤器。
过滤器规则:
· 过滤器的语法: {{ value|filter_name:参数 }}
· 使用管道符"|"来应用过滤器。
注意事项:
a. 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
b. 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
c. 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}
d. '|'左右没有空格
常用过滤器:
|
lower |
将变量全部转换成小写 |
{{ value|lower}} |
如果value传来的字符串是"Name",会显示"name" |
|
upper |
将变量全部转换成大写 |
{{ value|upper}} |
如果value传来的字符串是"Name",会显示"NAME" |
|
default |
变量设置默认值 |
{{ value|default:"nothing"}} |
如果value没有传值或者值为空的话就显示nothing |
|
length |
返回字符串和列表变量的长度 |
{{ value|length }} |
如 value=['a', 'b', 'c', 'd']的话,就显示4 |
|
safe |
对HTML标签和JS等语法标签进行自动转义 |
{{ value|safe}} |
比如:value="<script>alert('123')</script>" |
|
filesizeformat |
将值格式化为一个文件大小(例如 '13 KB', '4.1 MB', '102 bytes'…) |
{{ value|filesizeformat }} |
如果 value 是 123456789,输出将会是 117.7 MB。 |
|
slice |
切片 |
{{ value|slice:"2:-1" }} |
如果 value="hello world" |
|
date |
日期时间格式化 |
{{ value|date:"Y-m-d H:i:s"}} |
如果 value=datetime.datetime.now() |
|
truncatechars |
截取字符串 |
{{ value|truncatechars:9}} |
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾,同时是数量包含在参数个数中 |
|
truncatewords |
截取单词数 |
{{ value|truncatewords:3}} |
例如:‘hello girl hi baby yue ma’,得到的结果是 'hello girl h1...' |
|
cut |
移除与给出参数相同的字符串 |
{{ value|cut:' ' }} |
如果value为'i love you',那么将输出'iloveyou' |
|
join |
按给定参数字符拼接 |
{{ value|join:"+" }} |
如果value为['i', 'love', 'you'],那么将输出'i+love+you' |
过滤器safe
Django的模板中在进行模板渲染的时候会对HTML标签和JS等语法标签进行自动转义,这样是为了安全,django担心这是用户添加的数据,比如如果有人给你评论的时候写了一段js代码,这个评论一提交,js代码就执行啦,这样你是不是可以搞一些坏事儿了,写个弹窗的死循环,那浏览器还能用吗,是不是会一直弹窗啊,这叫做xss攻击,所以浏览器不让你这么搞,给你转义了。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义
过滤器案例:
lower/upper
filtertest.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板变量过滤器filter测试</title>
</head>
<body>
<div>
<h1>{{ str }}</h1>
<h1>{{ str|lower }}</h1>
<h1>{{ str|upper }}</h1>
</div>
</body>
</html>
views.py
def filtertest(request):
s="FILter"
return render(request,"filtertest.html",{"str":s})
渲染效果:

default
filtertest.html
<h1>{{ name|default:"yang" }}</h1>
<h1>{{ m|default:"yang" }}</h1>
views.py
def filtertest(request):
return render(request,"filtertest.html",{"m":""})
渲染效果:

Django模板之模板变量过滤器的更多相关文章
- Django 模板中 变量 过滤器的使用方法
一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量. 2.使用dot(.)能够访问变量的属性 3.当模板引擎碰到dot的 ...
- Django 模板中 变量 过滤器 标签 的使用方法
一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量. 2.使用dot(.)能够访问变量的属性 3.当模板引擎碰到dot的 ...
- Django——3 模板路径 模板变量 常用过滤器 静态文件的使用
Django 模板路径 模板变量 过滤器 静态文件的加载 模板的路径,有两种方法来使用 设置一个总的templates在大项目外面,然后在sittings的TEMPLATES中声明 在每一个APP中创 ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
- Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件
模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...
- Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器
目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...
- python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...
- [Django 1.5] jQuery/Ajax 在Django使用 ,如何更新模板里里变量
最近希望实现一个页面局部刷新的功能,于是开始查阅ajax资料.幸好现在ajax很多功能都封装在jQuery这个库里面,我们可以很方便去调用.通过学习几个简单的小例子,可以实现简单的前端代码更新,还有重 ...
- django 模板中通过变量替代key取字典内容
模板中通过变量替代key取字典内容 templatetags/├── get_item.py├── __init__.py ###get_item.py # coding=utf-8 from dja ...
随机推荐
- redis实现排行榜思路
用redis的排序集合类型 sortset()实现排行榜 zadd();添加 ZREVRANGE();查看
- application/x-www-form-urlencoded ,multipart/form-data, text/plain
APPLICATION/X-WWW-FORM-URLENCODED MULTIPART/FORM-DATA TEXT/PLAIN 后台返回的数据响应的格式类型 application/x-www-fo ...
- Linux安装jdk(详细教程)
一.JDK介绍 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JA ...
- Blazor WebAssembly 3.2.0 正式起飞,blazor 适合你吗?
最近blazor更新很快,今天在官方博客上发布了Blazor WebAssembly 3.2.0 RC:https://devblogs.microsoft.com/aspnet/blazor-web ...
- 三、通过Vue基础属性做一个Table的增加、删除、姓名音位吗查询
html头文件包括css,和vue.js的文件的引用 <!DOCTYPE html> <html lang="en"> <head> <m ...
- mac OS npm 安装/卸载失败 权限问题解决方案
在终端输入 sudo chown -R $USER /usr/local 输入开机密码
- Vue tools开发工具报错Cannot read property '__VUE_DEVTOOLS_UID__' of undefined
使用 vue tools 开发工具,不显示调试面板中的组件,点击控制台报错: Cannot read property 'VUE_DEVTOOLS_UID' of undefined 在 main.j ...
- 数学--数论--hdu 5878 I Count Two Three(二分)
I will show you the most popular board game in the Shanghai Ingress Resistance Team. It all started ...
- 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
有一个箱子容量为 V(正整数,0<=V<=20000),同时有 n 个物品(0<n<=30),每个物品有一个体积(正整数). 现在在 n 个物品中,任取若干个装入箱内,使得箱子 ...
- Socket中SO_REUSEADDR简介
SO_REUSEADDR:字面意思重复使用地址 一般来说,一个端口释放后会等待两分钟之后才能再次被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用. SO_REUSEADDR用于对TC ...