Django模板过滤器
2023-06-13 09:12:33 时间
一、过滤器概述
过滤器是通过管道符号(|
)进行使用的,例如:{{ 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 对象
<span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime
{<span class="hljs-string">'date'</span>:datetime.now()}
{{ date|date:<span class="hljs-string">"F j, Y"</span> }}
addslashes 添加反斜杠到任何反斜杠、单引号或者双引号前面
letter:<span class="hljs-string">'abc\def'</span>
{{ letter|addslashes }}
join 字符串拼接
<h1>{{list|join:<span class="hljs-string">'#'</span>}}</h1>
striptags 去除html标签
{{ code|striptags }}
三、自定义过滤器
目录结构
project/
App/
templatetags/ 名字固定 否则加载不到
__init__.py
mytag.py 名字自定义
mytag.py代码如下
<span class="hljs-keyword">from</span> django <span class="hljs-keyword">import</span> template <span class="hljs-comment"># 导入模板模块</span>
register = template.Library() <span class="hljs-comment"># 实例化对象</span>
<span class="hljs-comment"># 自定义过滤器</span>
<span class="hljs-meta">@register.filter</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">sum_filter</span><span class="hljs-params">(x,y)</span>:</span>
<span class="hljs-keyword">return</span> x+y
<span class="hljs-comment"># 自定义标签 可以传递多个参数</span>
<span class="hljs-meta">@register.simple_tag</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">sum_tag</span><span class="hljs-params">(x,y,z)</span>:</span>
<span class="hljs-keyword">return</span> 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 }} <span class="hljs-comment"># 第一个显示并转化为大写</span>
{{ my_list|last|upper }} <span class="hljs-comment"># 最后一个显示并转化为大写</span>
相关文章
- Python进阶30-Django AJAX
- Django的ORM简介
- Django模板标签
- Django(75)django-rest-framework-simplejwt「建议收藏」
- Django(13)django时区问题
- Django(32)自定义过滤器[通俗易懂]
- django执行原生sql_mysql语句执行顺序
- Django(31)模板中常用的过滤器
- Django 分析(一)Requst、Middleware 和 Response 数据流
- Python Django 编程 | 连载 04 - Django 模板
- pycharm django环境搭建_java项目框架搭建流程
- Django框架开发001期 Python+Django开发教程,开启你的第一个django网站应用
- 【Django】当大型项目采用Django框架对于QueryDict以及模板的表单在Admin 管理工具的使用
- Django 开发模板与视图
- 关于若依Python(Django-Vue-Admin)的一些设置
- Django学习
- django-gravatar 使用用户信息生成头像(gravatar 加速)
- django uwsgi 错误日志分析例子
- python-Django-Django 表单简介
- python3开发进阶-Django框架的中间件的五种用法和逻辑过程详解编程语言
- stark组件之分页【模仿Django的admin】详解编程语言
- 使用django-suit为django1.7admin后台添加模板