码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-05 22:31:35      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:char   包含   reg   标签   ash   name   单引号   过滤   个数   

模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符 .

模板标签(template tag) 。标签(tag)定义比较明确,即: 仅通知模板系统完成某些工作的标签。 

一:django自带过滤器

  

{{ name|lower }} 显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写
{{ my_list
|first|upper }} {{ bio|truncatewords:"30" }} addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。 date : 按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例: {{ pub_date|date:"F j, Y" }} length : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参数将返回字 符串中字符的个数。 你可以对列表或者字符串,或者任何知道怎么测定长度的Python 对象使用这个方法 (也就是说,有 __len__() 方法的对象)。

 

二:模板标签(template tag)

  标签(tag):定义比较明确,即: 仅通知模板系统完成某些工作的标签 ,比如

  for标签

  if 标签

三:自定义simple_tag

  如果django自带的过滤器和tag不满足需求,可以自己定义simple_tag和filter来使用

  把ptyhon某些函数直接那到模板语言使用,就模板的simple_tag

   建立步骤如下:

    步骤1)
        在某个app下面创建templatetags目录
    步骤2)在templatetags下面创建任意xx.py文件

    步骤3)创建template对象register,
    from django import template
    from django.utils.safestring import mark_safe
       
    register = template.Library()
       
    @register.simple_tag
    def my_simple_time(v1,v2,v3):
        return  v1 + v2 + v3

    步骤4)装饰自定义文件

    步骤5)setings里面注册app
    步骤6)在模板里顶部{% load xx%}
    步骤7)使用{% 函数名 参数%}

    优点:参数任意
    缺点:不能做为if条件

 

四:自定义filter(过滤器)

模板自定义filter
    
    步骤1)
        在某个app下面创建templatetags目录
    步骤2)在templatetags下面创建任意xx.py文件

    步骤3)创建template对象register,
    from django import template
    from django.utils.safestring import mark_safe
       
    register = template.Library()
       
    @register.filter
    def hello(v1,v2): 
        return  v1 + v2

    步骤4)装饰自定义文件

    步骤5)setings里面注册app
    步骤6)在模板里顶部{% load xx%}
    步骤7)使用{{ 参数1|函数名:参数2}} 最多传递两个参数
        {{ "word"|hello:"china" }}


        最多传递两个参数,如果要传递多个参数,可以这样写
        {{ 参数1|函数名:“参数2,参数2”}}
        在函数里split切割

    缺点:参数最多两个,不能加空格
    优点:能作为if条件

五:示例

  app01.templatetags

  xx.py

    # -*- coding:utf-8 -*-
    __author__ = shisanjun
    from django import template
    
    register=template.Library()
    
    @register.simple_tag
    def add(n,m): #自定义simple_tag,可以传递多个参数
        return n+m
    
    @register.filter
    def hello(n,m): #自定义filter,只能传递两个参数
        return n+m

 

  模板调用 

    {% load xx %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <p>simple_tag演示</p>
        {% add 2 3 %}
          <p>filter演示,filter最多传递两个参数</p>
        {{ "word"|hello:"china" }}
        <p>simple_tag不能使用if判断,filter可以用于if判断测试条件</p>
        {%if "word"|hello:"china" %}
        {% endif %}
    
    </body>
    </html>

 

技术分享

技术分享

技术分享

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

标签:char   包含   reg   标签   ash   name   单引号   过滤   个数   

原文地址:http://www.cnblogs.com/lixiang1013/p/7788926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!