day20-自定义filter

一、前言

之前我们学习了@register.simple_tag,我们今天来学习一下@register.filter,这个干吗的呐?这个是用于我们之前写的另外一种形式如下:

{{ bio|truncatewords:"30" }} 

类似于这种的,其实是这样的:bio和"30"都是参数,而truncatewords是函数,这个两个参数传入到truncatewords函数里面去处理,然后返回值回来,就是这样:

{{ 参数一|函数名:参数二 }} 

那这个是怎么实现的呐 ?今天我们就来学习一下,另外一种用法@register.filter的用法

二、自定义filter

自定义filter的步骤和simple_tag一模一样,只是有些稍微不一样,我们只需要说下不一样的地方,一样的地方请参照另外一篇博客:day20-自定义simple_tag

a、创建任意的.py文件,sgg.py

说明:最多只能传入两个参数,不能有第三个以上的参数

@register.filter
def shabihong(a1,a2):
    return a1 + a2

b、 使用filter

说明:这边'cang'和‘laoshi’,分别是参数1和参数2,shabihong是函数,参数2也可以是数字类型,但是函数需要转换成字符串类型的。

{{ "cang"|shabihong:"laoshi" }} #这边中间不能有空格

c、使用注意

说明:load需要在extends的下面

{% extends 'master.html' %}  #extends在上面
{% load sgg %}  #load在下面

三、filter和simple_tag的区别

3.1、filter

①支持if...else语句

{% if "cang"|shabihong:"laoshi" %}
{% endif %}

②函数(shabihong),只能传入两个参数,不能传入超过两个以上的参数

③使用filter时,中间不能有空格

3.2、simple_tag

①不支持if....else...语句

②可以支持传入多个参数

#函数
@register.simple_tag
def my_simple_time(v1,v2,v3):
    return  v1 + v2 + v3

#模板
{% my_simple_time 1 2 3 %}

③使用 simple_tag 可以有空格,而且可以有多个空格

转载于:https://www.cnblogs.com/zhangqigao/articles/8664167.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值