在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模板之模板变量过滤器的更多相关文章

  1. Django 模板中 变量 过滤器的使用方法

    一.变量       1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.    2.使用dot(.)能够访问变量的属性    3.当模板引擎碰到dot的 ...

  2. Django 模板中 变量 过滤器 标签 的使用方法

    一.变量       1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.    2.使用dot(.)能够访问变量的属性    3.当模板引擎碰到dot的 ...

  3. Django——3 模板路径 模板变量 常用过滤器 静态文件的使用

    Django 模板路径 模板变量 过滤器 静态文件的加载 模板的路径,有两种方法来使用 设置一个总的templates在大项目外面,然后在sittings的TEMPLATES中声明 在每一个APP中创 ...

  4. Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag

    Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...

  5. Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件

    模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...

  6. Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

    目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...

  7. python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

    python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...

  8. [Django 1.5] jQuery/Ajax 在Django使用 ,如何更新模板里里变量

    最近希望实现一个页面局部刷新的功能,于是开始查阅ajax资料.幸好现在ajax很多功能都封装在jQuery这个库里面,我们可以很方便去调用.通过学习几个简单的小例子,可以实现简单的前端代码更新,还有重 ...

  9. django 模板中通过变量替代key取字典内容

    模板中通过变量替代key取字典内容 templatetags/├── get_item.py├── __init__.py ###get_item.py # coding=utf-8 from dja ...

随机推荐

  1. redis实现排行榜思路

    用redis的排序集合类型  sortset()实现排行榜 zadd();添加 ZREVRANGE();查看

  2. application/x-www-form-urlencoded ,multipart/form-data, text/plain

    APPLICATION/X-WWW-FORM-URLENCODED MULTIPART/FORM-DATA TEXT/PLAIN 后台返回的数据响应的格式类型 application/x-www-fo ...

  3. Linux安装jdk(详细教程)

    一.JDK介绍 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JA ...

  4. Blazor WebAssembly 3.2.0 正式起飞,blazor 适合你吗?

    最近blazor更新很快,今天在官方博客上发布了Blazor WebAssembly 3.2.0 RC:https://devblogs.microsoft.com/aspnet/blazor-web ...

  5. 三、通过Vue基础属性做一个Table的增加、删除、姓名音位吗查询

    html头文件包括css,和vue.js的文件的引用 <!DOCTYPE html> <html lang="en"> <head> <m ...

  6. mac OS npm 安装/卸载失败 权限问题解决方案

    在终端输入 sudo chown -R $USER /usr/local 输入开机密码

  7. Vue tools开发工具报错Cannot read property '__VUE_DEVTOOLS_UID__' of undefined

    使用 vue tools 开发工具,不显示调试面板中的组件,点击控制台报错: Cannot read property 'VUE_DEVTOOLS_UID' of undefined 在 main.j ...

  8. 数学--数论--hdu 5878 I Count Two Three(二分)

    I will show you the most popular board game in the Shanghai Ingress Resistance Team. It all started ...

  9. 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划

    有一个箱子容量为 V(正整数,0<=V<=20000),同时有 n 个物品(0<n<=30),每个物品有一个体积(正整数). 现在在 n 个物品中,任取若干个装入箱内,使得箱子 ...

  10. Socket中SO_REUSEADDR简介

    SO_REUSEADDR:字面意思重复使用地址 一般来说,一个端口释放后会等待两分钟之后才能再次被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用. SO_REUSEADDR用于对TC ...