Django模板过滤器
阅读 (169792)
分享
一、过滤器概述
过滤器是通过管道符号(|
)进行使用的,例如:{{ name|length }}
,将返回name的长度。过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中
格式:{{ var|过滤器 }}
作用: 在变量被显示前修改它
二、内置过滤器与标签
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符
-
lower 文档大写转换文本为小写。
-
upper 文本转化为大写
-
capfirst 第一个字母大写
-
center 输出指定长度的字符串,并把值对中
center:“value”
-
cut 查找删除指定字符串
cut:“value”
-
default 如果一个变量没有被提供,或者值为false、空,可以使用默认值
default:“默认值”
-
default_if_none value值是None,使用指定值
default_if_none:“默认值”
-
divisibleby 判断是否整除指定数字
divisibleby:“2”
-
escape 转换为html实体
-
floatformat 默认保留1位小数
{{ 13.414121241|floatformat:“2” }} 保留2位小数
-
length 返回长度
-
random 返回序列的随机一项
-
wordcount 统计单词数
-
date 按指定的格式字符串参数格式化 date 或者 datetime 对象
from datetime import datetime {'date':datetime.now()} {{ date|date:"F j, Y" }}
-
addslashes 添加反斜杠到任何反斜杠、单引号或者双引号前面
letter:'abc\def' {{ letter|addslashes }}
-
join 字符串拼接
<h1>{{list|join:'#'}}</h1>
-
striptags 去除html标签
{{ code|striptags }}
三、自定义过滤器
-
目录结构
project/ App/ templatetags/ 名字固定 否则加载不到 __init__.py mytag.py 名字自定义
-
mytag.py代码如下
from django import template # 导入模板模块 register = template.Library() # 实例化对象 # 自定义过滤器 @register.filter def sum_filter(x,y): return x+y # 自定义标签 可以传递多个参数 @register.simple_tag def sum_tag(x,y,z): return x+y+z
-
在模板中使用
{% load mytag %} 加载自定义标签与过滤器的模块名 其中mytag就是mytag.py文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h4>首页</h4> 调用过滤器 {{ 1|sum_filter:1 }} 调用标签 {% sum_tag 1 2 3 %} </body> </html>
-
注意
-
过滤器函数只能传一个参数,
-
自定义标签可以写多个参数
-
四、注意
过滤管道可以被套接 ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入
实例
{{ my_list|first|upper }} # 第一个显示并转化为大写
{{ my_list|last|upper }} # 最后一个显示并转化为大写
需要
登录
才可以提问哦
: