码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习(三十七)—— 模板语言之自定义filter和中间件

时间:2018-01-29 21:28:28      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:模板   文件名   div   orm   if判断   定义   调用   代码示例   upper   

一、模板语言之自定义filter

自定义filter文件存放位置

模板中自定义函数
    - 在已注册的app中创建一个名字叫 templatetags 文件夹
    - 任意创建一个py文件
    - 创建名字交 register 的Library类的对象
    - 定义函数
    from django.template import Library
    register = Library()
                
    # 调用示例:{{ "a1"|meikai:"n1,n2"}}
    # 参数最多2
    # 可以做if的条件
    @register.filter
    def meikai(a1,a2):
        n1,n2 = a2.split(,)
        data = "我的名字叫:%s,我喜欢%s和%s" %(a1,n1,n2)
        return data
                
    # 调用示例:{% wangyan 1 2 3 4 %}
    # 参数无限制
    # 无法做if条件
    @register.simple_tag
    def wangyan(a1,a2,a3,a4):
        result = a1+a2+a3+a4
        return result        

技术分享图片

注意事项

py文件必须写上:
from django.template import Library
register = Library()

自定义函数的两种方式:
@register.filter
缺点:最多只能传两个参数,在模板使用方法{{ 参数1|函数名:参数2 }}
优点:可以在if判断中使用

@register.simple_tag
优点:可以传递多个参数,在模板使用方法{% 函数名 参数1 参数2 参数3 ... %}

在模板中想要使用自定义函数,必须先导入py文件,在模板的开头加上一句:
{% load py文件名(不用.py后缀) %}

 代码示例:

from django.template import Library

register = Library()


@register.filter
def t1(arg):
    return arg.upper()


@register.simple_tag
def melody(n1, n2, n3):
    str = "I‘am {},I like {},my dream is to be a {}".format(n1, n2, n3)
    return str

 

Python学习(三十七)—— 模板语言之自定义filter和中间件

标签:模板   文件名   div   orm   if判断   定义   调用   代码示例   upper   

原文地址:https://www.cnblogs.com/Coufusion/p/8379358.html

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