zoukankan      html  css  js  c++  java
  • Day21-自定义simple_tag/filter

    一. 在模板里面对用户发过来的数据进行二次加工。想办法把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条件

     

  • 相关阅读:
    【转载】关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题
    LeetCode: 【L4】N-Queens 解题报告
    【转载】在美国找工作秘籍
    Lintcode: Kth Largest Element 解题报告
    LeetCode: Reverse Integer 解题报告
    Lintcode: First Bad Version 解题报告
    九章面试题:Find first K frequency numbers 解题报告
    tomcat之虚拟目录
    百度搜索结果如何屏蔽百家号内容
    CentOS7之Rsync+Inotify架构实现实时同步文件和文件夹
  • 原文地址:https://www.cnblogs.com/momo8238/p/7676178.html
Copyright © 2011-2022 走看看