阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Django模板过滤器

154次阅读
没有评论

共计 1384 个字符,预计需要花费 4 分钟才能阅读完成。

一、过滤器概述

过滤器是通过管道符号(|)进行使用的,例如:{{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}} # 最后一个显示并转化为大写

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计1384字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中