7.filter----过滤器

一.介绍

1.过滤器
相当于有一个或两个参数的py函数,他的作用是修改变量的显示结果
2.用法

{{ vlaue|filter_name:参数 }}

eg:
a = 1
{{ a|add:3 }}  在模板上显示为4

二.基本过滤器

1.default
如果变量没传值,就显示default的值

a = None
{{ a|default:"nothing" }}
结果:nothing

ps:setting中Template–>‘string_if_invalid’: ‘找不到’ 如果变量无效不会报错,会返回我们自己设置的值–>找不到

2.add
给变量加值 str、num、list、set可以 tuple和dict不行 如果是str类型的int则相加,否则是拼接

a = '1'
{{ a|add:1 }}
结果:2

b =  "b"
{{ b|add:"a" }}
结果:ba

c = [1,2,3]
d = [4,5,6]
{{ c|add:d }}
结果:[1,2,3,4,5,6]

3.lower,upper,title
lower:大写
upper:小写
title:首字母大写

4.ljust,rjust,center
ljust:左对齐
rjust:右对齐
center:居中对齐

5.length
返回变量的长度

6.first,last
first:返回第一个元素
last:返回最后一个元素

7.join
类似于py中的str.join(list)

8.truncatechars
{{ 字符串|truncatechars:要显示的字符数 }}
如果字符串的长度大于要显示的字符串,贼会被截断,截断的字符用 '…'表示,
另外…也占3个长度,所以能显示的字符数=要显示的字符数-3

a = "abcdefg"
{{ a|truncatechars:5 }}
结果:ab...

9.date
将日期格式化,可以格式化的特定字符:
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#date

10.safe
告诉django代码是安全的,不会将代码转义

11.slice
和py切片差不多,索引可以用-1,但是模板语言中(.)方法却不行

三.自定义过滤器

为什么要自定义过滤器?django提供的过滤器可能不能满足我们的需要,自己动手丰衣足食
(1).定义
1.在app文件夹下创建一个py包,名称为templatetags(必须是py包且名称不能变)
在这里插入图片描述
2.在py包下创建一个py文件并配置:

	from django import template
	register = template.Library()   #这段代码也不能变

3.创建自己的过滤器函数

@register.filter
def add_haha(value,arg):    #value是传入的变量,arg是我们传入的参数
	return "{}哈哈".format(value)      #一定要有返回值

(2).使用
1.先导入文件{% load 放置过滤器函数的py文件 %}
2.再使用:

{{ a|add_haha }}

(3).注意事项
1.必须是py包且名称不能变
2.配置文件代码不能变,且函数要加装饰器
3.必须先导入才能更实用
4.创建完成之后必须重启项目才能生效
5.:后不要加空格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值