Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
| 前言 |
- 基本环境
- Django版本:1.11.8
- Python版本:3.6
- OS: win10 x64
- 本文摘要
- 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能、语法、代码和效果示例。
- 本文完整项目文件代码下载地址:完整示例
- Django完整内置过滤器帮助文档:Django内置过滤器完整版
- 参考文献:Django 中文文档 1.8
| 内置过滤器 |
注意:所有带参数的过滤器,在使用时,冒号:和参数中间不能有空格。
add加
功能:
把add后的参数num加给value;
数字相加会进行算术相加;
字符串会被拼接。语法:
{{ value|add:"num" }}示例效果:
1、数字相加
2、字符串相加
join连接
- 功能:
以指定字符串str连接列表list中的元素,与python中的str.join(list)相似; - 语法
{{ value|join }} - 示例效果:
使用"// "连接列表,
{{ value|join:" // " }}。
addslashes在引号前加斜杠
- 功能:
在引号前面加上斜杆。例如,用于在CSV中转义字符串。 - 语法:
{{ value|addslashes }}
如果value是"I'm using?Django",输出将变成"I'm using Django". - 示例效果:
地址栏中的 %20表示空格;
capfirst首字母大写
- 功能:
大写变量的第一个字母。如果第一个字符不是字母,则该过滤器不会生效。 - 语法:
{{ value | capfirst }} - 示例效果:
title首字母大写
- 功能:
大写字符串中单词的第一个字母。如果第一个字符不是字母,则该过滤器不会生效。 - 语法:
{{ value | title}} - 示例效果:
当单词“1good”并不是以字母开头时,title过滤器失效。
- 拓展:
- upper大写过滤器,将所有字母都大写,
{{ value | upper}} - lower大写过滤器,将所有字母都小写,
{{ value | lower}}
- upper大写过滤器,将所有字母都大写,
cut切割指定字符
- 功能:
移除value中所有的与给出的变量相同的字符。 - 语法:
{{ value|cut:"str" }};str为指定移除字符。 - 示例效果:
length求字符串或列表长度
功能:
返回字符串或列表长度;语法:
{{ value|length}}示例效果:
- 拓展:
- length_is,若value的长度与width相等,则返回True;否则,返回False。
{{ value|length_is:"width" }}
- length_is,若value的长度与width相等,则返回True;否则,返回False。
linenumbers换行加行号
- 功能:
当文本为多行时,为每行添加行号。返回的文本可能是一行,可以同时使用linebreaksbr换行。 - 语法:
{{ value|linenumbers }} - 示例效果:
这里使用value='a \n b \n c',为了防止浏览器解析为一行,这里使用linebreaksbr过滤器进行换行。
{{ value|linenumbers|linebreaksbr }} - 拓展:
- linebreaksbr是一个换行过滤器,语法为:
{{ value|linebreaksbr }},它替换字符串中所有的“\n”为“
”; - 例如, 。
- linebreak也是一个换行过滤器,语法为:
{{ value|linebreak }},它替换字符串中所有的“\n”为<br />,新形成的新行使用段落标签<p></p>包含。 - 例如, "Joel\nis a slug"会被转换为
<p>Joel<br />is a slug</p>。
- linebreaksbr是一个换行过滤器,语法为:
date日期
- 功能:
根据给定格式,对一个date变量进行格式化。 - 语法:
{{ value|date:"D d M Y" }}- 也可以不使用格式字符串,
{{ value|date }}
- 也可以不使用格式字符串,
- 如果value是datetime对象
如,datetime.datetime.now(),将输出字符串'Web 09 Jan 2008'。 - 传递的时间格式也可以是预定义的格式:
- DATE_FORMAT
- DATETIME_FORMAT
- SHORT_DATE_FORMAT
- SHORT_DATET
- 预定义的格式根于语言环境不同而有所不同。
- 示例效果:
这里使用datetime模块中的datetime.now()函数返回时间元组,将时间元组赋值给变量value;date过滤器不使用参数,采用默认参数。
# views.py文件中
def filter_Test(request, value):
# 参数value
from datetime import datetime
value = datetime.now()
return render(request, 'filterTest.html', {'value': value})
default默认
功能:
如果value的计算结果为False,则使用给定的默认值;否则,使用该value值。语法:
{{ value|default:"指定默认内容" }}value为""(空字符串)或None
{{ value|default:"nothing" }}输出为nothing。示例效果:
url方法
参见:利用Django中的url方法实现地址动态拼接自动生成超链接地址
dictsort字典排序
- 功能:
接收一个字典列表,并返回按参数中给出的键排序后的列表; - 语法:
{{ value|dictsort:'key' }}
#如果value为
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
# 则经过dictsort根据键name排序后为
# {{ value|dictsort:'name' }}
[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
- 示例效果
# 在views.py文件中
## 内置过滤器dictsort测试专用
def filter_Test(request, value):
# 参数value,传值给语法中的value
value = [
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
return render(request, 'filterTest.html', {'value': value})
- 示例效果:
可以看出,字典列表已经根据name键排序。
dictsortreversed字典逆排序
- 功能:
接收一个字典列表,并返回按照参数中给出的键按相反顺序排序的列表;这与上面的过滤器完全相同,但返回的值将是相反的顺序。 - 语法:
{{ value|dictsortreversed:'key' }}
#如果value为
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
# 则经过disort根据键name排序后为
# {{ value|dictsortreversed:'name' }}
[
{'name': 'zed', 'age': 19},
{'name': 'joe', 'age': 31},
{'name': 'amy', 'age': 22},
]
- 示例效果:
前面使用name,这里使用age
从结果上看,字典列表按照age键进行逆排序。
center字符串居中
功能:
在给定字符串宽度中,让字符串居中显示;语法:
{{ value|center:'width' }}- 例如:
{{ "walt"|center:'10' }};则结果为
"☐☐☐walt☐☐☐",☐为空格。
示例效果:
- 拓展:
此外还有ljust左对齐和rjust右对齐方法,类似center。
escape转义用于HTML的字符代码
- 功能:
将HTML能识别到的符号转换为HTML字符代码。 - 语法:
{{ value|escape }} - 该部分未实验成功,待更新。
escapejs转义用于JavaScript字符串的字符
功能:
转义用于JavaScript字符串的字符。虽然这在HTML中是不安全的,但可以确保在使用模板生成JavaScript/JSON时避免语法错误。语法:
{{ value|escapejs }}示例效果:
floatformat格式化显示浮点数
- 功能:
根据参数控制浮点数的格式化显示,舍去位数采用四舍五入。 - 语法:
{{ value|floatformat:dotWidth }}- 参数dotWidth指定了浮点数显示的位数;
- dotWidth默认为-1,其中负号表示当value小数点后都是0时,只显示整数部分;1表示当value小数点后有至少1位非零数时,只保留1位小数;
- dotWidth=num,且num>0,其中表示不管value小数点后有没有非零数,保留num位小数;
- dotWidth=num,且num<0,其中负号表示当value小数点后都是0时,只显示整数部分;1表示当value小数点后有至少1位非零数时,保留num位小数。
- 示例效果:
浮点数的小数点后全是0
浮点数的小数点后有非零值
safe安全模式
- 功能:
将字符串标记为在输出之前不需要进一步的HTML转义。当自动转义关闭时,此过滤器不起作用。 - 语法:
{{ value|safe }} - 示例效果:
| 总结 |
- 本文完整项目文件代码下载地址: 完整示例
- Django完整内置过滤器帮助文档:Django内置过滤器完整
- 参考文献:Django 中文文档 1.8
- 能力有限,欢迎指错交流;
Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档的更多相关文章
- Wireshark过滤器详解
Wireshark过滤器详解 1.Wireshark主要提供两种主要的过滤器 捕获过滤器:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获 显示过滤器:该过滤器根据指定的表达式用 ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...
- for循环与内置方法详解
''' for循环与内置方法详解 ''' # 循环:重复(按照某种规律的)做一件事情 # lt = [1, 2, 3, 4] # # ind = 0 # # while True: # print(l ...
- MYSQL常用内置函数详解说明
函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...
- 序列内置方法详解(string/list/tuple)
一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母. ...
- Python内置方法详解
1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名. 可以查看所有的字符串的内置方法,如: 1> count ...
- Asp.Net MVC学习总结之过滤器详解(转载)
来源:http://www.php.cn/csharp-article-359736.html 一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...
- Django框架 之 querySet详解
Django框架 之 querySet详解 浏览目录 可切片 可迭代 惰性查询 缓存机制 exists()与iterator()方法 QuerySet 可切片 使用Python 的切片语法来限制查询集 ...
随机推荐
- Hibernate框架简介(二)基本使用增、删、改、查
一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬 ...
- Starting MySQL.. ERROR! The server quit without updating PID file (/gechong/mysqldata/10-9-23-119.pid).
配置文件修改错误了,还原一下重启服务就OK了. # /etc/init.d/mysql start
- 实现 1像素border
border-1px($color) position: relative &:after display: block position: absolute left: 0 bottom: ...
- JS将数字转换为大写汉字人民币
<script language="jscript"> function convertCurrency(currencyDigits) { // Constants: ...
- notify notifyAll 死锁
从一个死锁分析wait,notify,notifyAll 泡芙掠夺者 关注 2017.08.24 22:00* 字数 1361 阅读 249评论 3喜欢 7赞赏 1 本文通过wait(),notify ...
- [TODO]com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
异常信息如下: 2018-10-30 20:00:50.230 ERROR java.util.concurrent.ExecutionException: com.alibaba.dubbo.rpc ...
- python之函数用法xrange()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法xrange() #xrange() #说明:返回一个生成器 #xrange做循环的性 ...
- java 调整jvm堆大小上限
针对单个类,eclipse中调整jvm的运行参数,加上这么一句: -Xmx80m 即可把堆上限调整到80m. 关键字: BEA JRockit
- CentOS 6.5上使用gdb调试时出现Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686 .
在CentOS6.5上用gdb调试时提示Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686先修改 ...
- IT忍者神龟之 oracle行转列、列转行
一.行转列 须要将例如以下格式 转换为: 这就是最常见的行转列,主要原理是利用decode函数.聚集函数(sum).结合group by分组实现的 create table test( id varc ...