Django中模版的使用
在上一篇博客中介绍了模版的基础知识和模版内置标签的使用,这篇博客主要介绍模版的内置过滤器。过滤器的定义如下:
过滤器:用于HTML模版中,对于渲染过来的数据(即视图传入的数据)进行二次操作使用,比如调整数据的显示格式,字符串设置大小写等等。因为在HTML模版中,无法直接使用Python代码对数据进行处理,所以过滤器实质上就是提供了一种在HTML模版中使用Python函数的方法。
内置过滤器
在Django默认模版引擎中,常用的内置过滤器包括如下函数:
内置过滤器函数 | 使用方法 | 说明 |
---|---|---|
add | {{value|add:10}} | 给value的值加10 |
date | {{value|date:"Y-m-d H:i:s"}} | 把日期格式按照规定的格式化显示 |
cut | {{value|cut:"xx"}} | 把value字符串中的xx删掉 |
capfirst | {{value|capfirst}} | value首字母大写 |
default | {{value|default:"xx"}} | value为False的时候使用默认值 |
default_if_none | {{value|default_if_none:"xx"}} | value值为空的时候使用默认值 |
dictsort | {{value|dictsort:"key"}} | 值为字典的列表,按照key排序 |
dictsortreversed | {{value|dictsortreversed:"key"}} | 值为字典的列表,按照key倒序 |
first | {{value|first}} | 返回列表中第一个元素 |
last | {{value|last}} | 返回列表中最后一个元素 |
floatformat | {{value|floatformat:2}} | 保留小数点后两位 |
join | {{value|join:"xx"}} | 使用xx将value中的元素拼接起来 |
length | {{value|length}} | 返回value的长度 |
divisibleby | {{value|divisibleby:2}} | 如果可以被2整除返回True |
length_is | {{value|length_is:"2"}} | 如果长度是2返回True |
safe | {{value|safe}} | 将字符串形式的html代码在前端进行安全展示 |
random | {{value|random}} | 随机列表中的一个值 |
slice | {{value|slice:":2"}} | 截取前两个字符 |
slugify | {{value|slugify}} | value中的字母小写,单词之间使用—分隔 |
upper | {{value|upper}} | 字符串大写 |
urlize | {{value|urlize}} | 字符串中链接可以点击 |
wordcount | {{value|wordcount}} | 字符串中单词数 |
timeuntil | {{value|timeuntil}} | 距离当前日期的天数和小时数(未来时间) |
下面结合具体的代码,展示内置过滤器的使用方法:
(1)首先我们在视图函数中,定义好需要传入的数据:
(2)在模版文件filter.html中,使用内置过滤器对视图传递的数据进行二次处理,如下:
(3)启动服务,在浏览器中进行访问,得到经过过滤器处理之后的数据形式:
自定义过滤器
虽然Django模版中提供了许多内置过滤器,但是在实际应用开发过程中,针对具体的场景可能我们还需要进行自定义的过滤器的实现,这里介绍如何自定义过滤器。
(1)在应用目录下(app)创建 "templatetags" 文件夹,并在该文件夹下创建__init__.py和test_filter.py文件。
- __init__.py:表明这是一个Python包
- test_filter.py:在该文件中实现具体的过滤器函数,如下所示:
(2)在模版文件filter.html中通过如下方式进行调用:
- 加载自定义的过滤器
- 调用的方式和内置过滤器相同
- 启动服务,在浏览器中进行访问如下:
参考资料
https://coding.imooc.com/class/393.html