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 ...
随机推荐
- mysql---3种常用引擎 和优点
- HDU 5451 Best Solver
没有意识到循环节最大是M^2,用域Z_M下二阶可逆矩阵群的最大循环节(M^2-1)*(M^2-M)来做,考虑大数乘法,矩阵乘法,做到吐血.将代码贴在下方留作纪念. #include<bits/s ...
- 再也不用c刷题了!!——c++刷题必备
致读者: 博主是一名数据科学与大数据专业大二的学生,真正的一个互联网萌新,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于困惑的读者.由于水平有限,博客中难免会有一些错误 ...
- 项目Alpha冲刺 Day12
1)站立式会议: 2)今日安排: 项目演示. 3)项目情况 项目进展:系统已实现预期的所有的功能.问题困难:系统测试不够全面,主要做功能测试,对于非功能测试,如压力测试.效能测试.安全性等并未测试.心 ...
- 瑞银预计小扎的十年规划可获大回报 上调Facebook股票目标价
瑞银认为马克·扎克伯格(Mark Zuckerberg)为Facebook定制的十年规划将带来丰厚回报,它已将Facebook股票的目标价由之前的155美元上调至165美元. Facebook首席执行 ...
- 算法竞赛进阶指南--在单调递增序列a中查找小于等于x的数中最大的一个(即x或x的前驱)
在单调递增序列a中查找<=x的数中最大的一个(即x或x的前驱) while (l < r) { int mid = (l + r + 1) / 2; if (a[mid] <= x) ...
- 算法竞赛进阶指南--快速幂,求a^b mod p
// 快速幂,求a^b mod p int power(int a, int b, int p) { int ans = 1; for (; b; b >>= 1) { if (b &am ...
- CF思维联系– Codeforces-989C C. A Mist of Florescence
ACM思维题训练集合 C. A Mist of Florescence time limit per test 1 second memory limit per test 256 megabytes ...
- 洛谷 P 4180 次小生成树
题目描述 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得 ...
- 消息队列,RabbitMQ、Kafka、RocketMQ
目录 1.消息列队概述 1.1消息队列MQ 1.2AMQP和JMS 1.2.1AMQP 1.2.2JMS 1.2.3AMOP 与 JMS 区别 1.3消息队列产品 1.3.1 Kafka 1.3.2 ...