Django模板过滤器

知识点:

  1. 基本概念
  2. 常用的过滤器
  3. 过滤器例子
  4. 关于自动转义

模板过滤器

作用:对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。

语法:{{fruits|lower}}

管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。

语法:{{fruits|lower|capfirst}}

使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,

语法如下: {{fruits|cut:" "}}

注意:使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。

过滤器参数,可以使用变量.

字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串。

Django常用的过滤器

1、 add :字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串。
2、default:提供一个默认值,在这个值被django认为是False的时候使用。比如:空字符串、None。区别于default_if_none,这个只有在变量为None的时候才使用默认值。
3、first:返回列表中的第一个值。
4、last:返回列表中的最后一个值。
5、date:格式化日期和时间。
6、time:格式化时间。
7、join:跟python中的join一样的用法。
8、length:返回字符串或者是数组的长度。
9、length_is:字符串或者是数组的长度是否是指定的值。
10、lower:把所有字符串都编程小写。
11、truncatechars:根据后面给的参数,截断字符,如果超过了用…表示。
12、truncatewords:同truncatechars,这个是以一个单词为单位进行截断。
以上两个有xxx_html类型的,针对html,截断标签中的字符,而不会截断标签。
13、capfirst:首字母大写。
14、slice:切割列表。用法跟python中的切片操作是一样的,区间是前闭合后开放。
15、striptags:去掉所有的html标签。
16、safe:关闭变量的自动转义
17、floatformat:浮点数格式化。

date和time过滤器格式

Y:四位数的年。如:1999
y:两位数的年。如:99
m:两位数的月。如:01,09
n:一位数的月。如:1,9,12
d:两位数的日。如:01,09,31
j:一位数的日。如:1,9,31
g:12小时制的一位数的小时。如:1,9,12
G:24小时制的一位数小时。如:0,8,23
h:12小时制的两位数的小时。如:01,09,12
H:24小时制的两位数的小时。如:01,13,24
i:分钟。从00-59
s:秒。从00-59

过滤器例子:

新建一个名为movie的APP.

{# movie/templates/movie/home.html #}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>home</title>
</head>
<body>
    这是没做处理的变量:{{ test }}<br>
    这是设置了默认值的变量:{{ xx|default:'xxxxxx' }}<br>
    这是设置了只有为None时才使用默认值的变量:{{ xx|default_if_none:'xxxxxx' }}<br>
    这是变为小写后的变量:{{ test|lower }}<br>
    这是先变成小写再将首字母大写后的变量:{{ test|lower|capfirst}}<br>
    这是两个数字变量相加:{{ num1|add:num2 }}<br>
    这是两个字符串变量相加:{{ test|add:xx }}<br>
    这是列表变量的第一个元素:{{ list|first }}<br>
    这是列表变量的最后一个元素:{{ list|last }}<br>
    这是默认的data日期时间格式:{{ now|date }}<br>
    这是默认的time时间格式:{{ now|time }}<br>
    这是data过滤器的年月日24小时制时间格式:{{ now|date:'Y/m/d/H:i:s ' }}<br>
    这是time过滤器的年月日12小时制时间格式:{{ now|time:'h:i:s ' }}<br>
    这是字符串的join方法:{{ ls|join:'xxx' }}<br>
    这是字符串的长度方法:{{ test|length }}<br>
    这是列表的长度是否长度为4:{{ list|length_is:4 }}<br>
    这是字符串只显示4个字符,其余省略(占3位):{{ test|truncatechars:7 }}<br>
    这是字符串只显示2个单词,其余省略(不占位):{{ test|truncatewords:2 }}<br>
    这是字符串切片:{{ test|slice:'1:4' }}<br>
    这是列表切片:{{ list|slice:':2' }}<br>
    这是含html标签的字符串:{{ html }}<br>
    这是去掉字符串中的html标签:{{ html|striptags }}<br>
    这是关掉自动转义,使字符串中html标签生效:{{ html|safe }}<br>
    这是没做处理的小数:{{ float }}<br>
    这是保留了一位小数:{{ float|floatformat }}<br>
    这是保留了两位位小数:{{ float|floatformat:'2' }}<br>  
</body>
</html>

# movie/views.py
from django.shortcuts import render
from datetime import datetime

ls = ['x','y','z']
def hello(request):
    test = 'THIS IS A LIST!'
    return render(request,'movie/home.html',
                  context={'test':test,
                           'xx':'',
                           'num1':1,
                           'num2':2,
                           'list':ls,
                           'now':datetime.now,
                           'html':'<h1>hello django!!!</h1>',
                           'float':3.1415926,
                           })

关于自动转义

什么是自动转义?
自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。
<:转义成&lt;
>:转义成&gt;
‘:转义成&#39;
“:转义成&quot;
&:转义成&amp;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343