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 的切片语法来限制查询集 ...
随机推荐
- Linux虚拟机下使用USB转串口线——配置minicom、以及screen的使用
转自:http://bbs.ednchina.com/BLOG_ARTICLE_637212.HTM 环境:Windows XP + (VMware Workstation - Linux) 1.确保 ...
- PyQt5教程——布局管理(4)
PyQt5中的布局管理 布局管理是GUI编程中的一个重要方面.布局管理是一种如何在应用窗口上防止组件的一种方法.我们可以通过两种基础方式来管理布局.我们可以使用绝对定位和布局类. 绝对定位 程序指定了 ...
- TOD&FIXME&XXX
TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明.FIXME: + 说明:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作 ...
- 在命令行上 使用 mutt, fetchmail, maildrop, msmtp 收发邮件
基于shell 现在已经有了 Mail.app, Thunderbird, Outlook 这些图形化工具能很方便的处理邮件,为啥还需要 mutt 这种命令行文本方式的邮件工具呢?mutt 的一个优势 ...
- oracle 批量更新之将一个表的数据批量更新至另一个表
oracle 批量更新之将一个表的数据批量更新至另一个表 CreationTime--2018年7月3日17点38分 Author:Marydon Oracle 将一个表的指定字段的值更新至另一个 ...
- Redis学习(8)-redis持久化
内存(兔子):高效,断电数据丢失 硬盘(乌龟):读写速度慢于内存的,断电数据依旧存在 持久化:把数据保存在硬盘上 关系型数据库:MySQL-持久化: 任何操作都是硬盘上,断电以后,硬盘上数据还在. 非 ...
- Ways to 优化JAVA程序设计和编码,提高JAVA性能
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化.一般有两种方案:即优化代码或更改设计方法.我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能 ...
- 【转载】PL/SQL配置连接ORACLE
一.需安装ORACL客户端. 配置文件路径: E:\Oracle\product\10.1.0\Client_3\NETWORK\ADMIN\tnsnames.ora 内容如下: # TNSNAMES ...
- HDUOJ1086You can Solve a Geometry Problem too
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- iOS - CFSocket 的使用
1.CFSocket 苹果对对底层 BSD Socket 进行轻量级的封装(纯 C). 主要使用的 API:CFSocekt 用于建立连接,CFStream 用于读写数据. 2.基本使用 2.1 Cl ...