zoukankan      html  css  js  c++  java
  • 模板语言 自定义函数simple_tag

    模板语言自带的一些处理函数:通过管道符来处理

    帮助方法:
    {{ item.event_start|date:"Y-m-d H:i:s"}}  转换成日期时间型
    {{ bio|truncatewords:"30" }} 只取前30个字符
    {{ my_list|first|upper }} 将第一个字母大写
    {{ name|lower }} 全转换小写

    有时我们须要自定义函数:  

    @register.simple_tag   

    a、在app中创建templatetags模块

    b、创建任意 .py 文件,如:xx.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/usr/bin/env python
    #coding:utf-8
    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
       
    @register.simple_tag
    def my_input(id,arg):
        result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
        return mark_safe(result)

    c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名

    1
    {% load xx %}

    d、使用simple_tag

    1
    2
    {% my_simple_time 1 2 3%}
    {% my_input 'id_username' 'hide'%}

    e、在settings中配置当前app,不然django无法找到自定义的simple_tag  

    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',
    )

    @register.filter

    注册filter跟tag步骤是一样的,只是把@register.simple_tag换成@register.filter,然后调用时用管道符方式,变量|函数名:"参数"

    比较:

    			simple_tag
    				a. app下创建templatetags目录
    				b. 任意xxoo.py文件
    				c. 创建template对象 register
    				d. 
    					@register.simple_tag
    					def func(a1,a2,a3....)
    						return "asdfasd"
    				e. settings中注册APP
    				f. 顶部 {% load xxoo %}
    				g. {% 函数名 arg1 arg2 %}
    				缺点:
    					不能作为if条件
    				优点:
    					参数任意
    			filter
    				a. app下创建templatetags目录
    				b. 任意xxoo.py文件
    				c. 创建template对象 register
    				d. 
    					@register.filter
    					def func(a1,a2)
    						return "asdfasd"
    				e. settings中注册APP
    				f. 顶部 {% load xxoo %}
    				g. {{ 参数1|函数名:"参数二,参数三" }} {{ 参数1|函数名:数字 }}
    				缺点:
    					最多两个参数,不能加空格,非要多个参数得写成一个字符串,自己切分
    				优点:
    					能作为if条件
    

      

  • 相关阅读:
    6 网络爬虫引发的问题及Robots协议
    WEB测试方法总结-笔记(转)
    最全的Http协议、get和post请求的整理
    random()函数的应用---面试
    求两个列表的交集、差集、并集---面试
    python中函数参数传递--引用传递(面试)
    linux重定向命令>和>>---面试
    正则表达式re.findall和re.search的使用---面试
    关于可迭代对象的详解
    sorted()函数排序的灵活运用---面试
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/10170817.html
Copyright © 2011-2022 走看看