一. 在模板里面对用户发过来的数据进行二次加工。想办法把Python的函数放到模板语言里面使用。

有2种方法:filter与simple_tag

二. 实例

{{name|lower}}

truncatewords这个是函数,name和3都会传给它。意思是取前3个字符串。

三.  实例

{{ name|truncatewords:"3" }}  name和3都会传给truncatewords函数。

那么{{ name|truncatewords:"3" }}  filter 类型 与我们自定义的{% test1 2 5 %}  simple_tag有什么区别呢???

A-使用的装饰器不同,1个是filter 类型,1个是simple_tag类型。

B-filter 类型,只能传2个参数,而且不能有空格

C-调用时的格式不同,一个是{{  }},一个是{% %}

非要传2个参数的话,得自己构造了。{{"maliya"|test2:"LS,YH"}},传过去以后,再通过字符串分割就行了。

总体看来,simple_tag 用起来比较灵活,filter 类型比较死板(但是它能用在if---else---判断里面),

四.在模板里面写上自定义函数,这个自定义函数也可以传参数。

Templates
-母版...html:extends,include
-自定义函数:
imple_tag
1.在app01下创建templatetags目录(被引用的模板必须放到特定的目录下面)
2.任意py文件
3.创建template对象register
4. 定义函数,并且加上装饰器。
        @register.simple_tag
         def test(a1,a2)
    return '123abc'
5.settings中注册APP
6.在引用的.html的顶部写上 {% load xxoo %}
7.使用的时候 {% 函数名 arg1 arg2 %}

第1步:

2.第2步

3. 第三步:

4. 运行效果:

五: 小结- filter与simple_tag的比较

自定义函数:   simple_tag

1.在app01下创建templatetags目录(被引用的模板必须放到特定的目录下面),位置和名字是不能改的。

2.任意py文件

3.创建template对象register

4.定义函数,并且加上装饰器:

@register.simple_tag

def test(a1,a2,a3,a4)

     return '123abc'

5.settings中注册APP

6.在.html顶部写上 {% load xxoo %}

7.使用的时候用 {% 函数名 arg1 arg2 %}

缺点:不能作为if条件,

优点:可以传任意多个参数

filter

1.在app01下创建templatetags目录

2.任意py文件

3.创建template对象register

4.     @register.simple_tag     def test(a1,a2) //最多只能有2个参数      return '123abc'

5.settings中注册APP

6.在顶部{% load xxoo %}    7.使用的时候{{参数1|函数名:"参数2 参数3"}} {{参数1|函数名:数字}}

缺点:最能只能传2个参数,不能加空格

优点:能作为if条件

Day21-自定义simple_tag/filter的更多相关文章

  1. Django学习手册 - 自定义simple_tag / filter

    相关: Django的模板引擎提供一般性的功能函数,通过前端可以实现多数的代码逻辑功能,但它仅支持大多数常见情况下的函数功能,例如if判断,ifequal对比返回值等,复杂一些的函数功能并不支持,例如 ...

  2. django自定义simple_tag和filter

    1.自定义simple_tag: 1).在app目录名下创建templatetags目录,并新建__init__.py文件. 2).在templatetags目录下创建任意名字的py文件,例如rema ...

  3. 18)django-模板的过滤器和tag,自定义simple_tag和filter

    模板过滤器是在变量被显示前修改它的值的一个简单方法. 过滤器使用管道字符 . 模板标签(template tag) .标签(tag)定义比较明确,即: 仅通知模板系统完成某些工作的标签.  一:dja ...

  4. Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag

    Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...

  5. 一个自定义 HBase Filter -“通过RowKeys来高性能获取数据”

    摘要: 大家在使用HBase和Solr搭建系统中经常遇到的一个问题就是:“我通过SOLR得到了RowKeys后,该怎样去HBase上取数据”.使用现有的Filter性能差劲,网上也没有现成的自定义Fi ...

  6. MVC之 自定义过滤器(Filter)

    MVC之 自定义过滤器(Filter) 一.自定义Filter 自定义Filter需要继承ActionFilterAttribute抽象类,重写其中需要的方法,来看下ActionFilterAttri ...

  7. spring-cloud-Zuul学习(四)【中级】--自定义zuul Filter详解【重新定义spring cloud实践】

      实现自定义zuul Filter 方法很简单,只要继承ZuulFilter跟加入到spring IOC容器即可,zuulFilter是一个抽象类,里面包含以下方法需要我们实现: String fi ...

  8. Struct2中自定义的Filter无效

    解决办法,把自定义的Filter配置放在struct2前 <?xml version="1.0" encoding="UTF-8"?> <we ...

  9. Day21 过滤器(Filter)

    day21     过滤器(Filter) 过滤器概述   1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个 ...

  10. shiro自定义logout filter

    虽然shiro有自己默认的logout过滤器,但是,有些时候,我们需要自己定义一下操作,比如说loutgout后,进入指定页面,或者logout后写入日志操作,这个时候,我们可以通过自定义logout ...

随机推荐

  1. NB-IOT模组指令AT+NMSTATUS和AT+CGPADDR对比

    1. AT+NMSTATUS,这个指令是用来查询模块在IOT平台的注册情况.注册指的是lwm2m协议里面的注册机制,详细可以参考lwm2m协议. 2. AT+MREGSWT,设置重启之后,自动启动注册 ...

  2. [cogs2314][HZOI 2015] Persistable Editor - 可持久化平衡树

    [cogs2314][HZOI 2015]Persistable Editor - 可持久化平衡树 题目链接 首先吐槽扯淡几句 [题目描述] 维护一种可持久化的文本编辑器,支持下列操作: 1 p st ...

  3. 使用idea写ssm的时候提示源文件夹中的文件找不到

    <context:property-placeholder location="classpath:db.properties"/>这一行idea提示找不到db.pro ...

  4. Unity利用Share SDK实现QQ、微信及微博第三方登录及定制内容分享(附代码)

    最近因为公司的项目需要添加一些实用性的功能,需要添加第三方登录及分享,采用的是Mob的SDK,可以先到其官网下载对应的SDK 点击这里,为了方便后期进行数据统计和分析,所以可以先添加一个应用,添加成功 ...

  5. Elastic-Job 分布式调度平台

    概述 referred:http://elasticjob.io/docs/elastic-job-lite/00-overview Elastic-Job是一个分布式调度解决方案,由两个相互独立的子 ...

  6. Struts2(一.基本介绍,环境搭建及需求分析)

    Struts2框架开发 前言 开发工具:eclipse struts1:老项目使用较多,维护时需要用到 struts2:新项目使用较多 一.特点 1. 无侵入式设计 struts2 与 struts ...

  7. python终端计算器,还有没其他方法?

    import sysdef lt(a, b, c ): if b == "+": return int(a)+int(c) elif b == "-": ret ...

  8. leetcode- 将有序数组转换为二叉搜索树(java)

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...

  9. [linux] centos搭建openvpn服务,脚本颁发/吊销证书 (转载+原创)

    搭建过程转载:http://yestreenstars.blog.51cto.com/1836303/1429537 环境说明:服务端:CentOS 6.5_X64客户端:Windows 7 服务端配 ...

  10. Alpha阶段贡献分分配

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2281] 要求1 每位组员的贡献分值 徐常实:14 张帅:13 王硕:12 赵佳 ...