django自定义标签和自定义过滤器的使用,作用以及区别

本文详细介绍了在Django中如何创建和使用自定义标签与过滤器,包括步骤说明及示例代码,帮助开发者更好地理解并应用到实际项目中。

自定义标签:写一个标签函数,能够对html页面传进来的参数进行处理,并且返回效果
过滤器:过滤器函数,把html页面传进来的参数进行处理,得到html文件中需要的变量结果


1、两者的创建:
第一步:在app中。新建一个templatetags目录,并在其中创建__init__.py文件

第二步:在settings.py的INSTALLED_APP中加入第一步的app

第三步:在第一步创建的templatetags目录中创建过滤器模板文件。此模块名称会被用来导入文件中定义的过滤器,所以命名要尽量避免与其他过滤器模块文件重复

第三步的创建任意 .py 文件,如:xx.py
from django import template

register = template.Library()

@register.simple_tag #自定义标签
def my_simple_time(v1,v2,v3):
return v1 + v2 + v3

# 最简单的标签注册方式,默认使用函数名作为标签名,
# 标签参数规则与python一般函数一致
@register.simple_tag
def replace_str(str_base, re_str, p_str=""):
    return str_base.replace(re_str, p_str)

 

@register.filter #过滤器

def ya(value):

temp = '<a href="http://www.baidu.com?t=%s"></a>'%(value)
return temp

 

# 使用参数并且指定参数可不传的过滤器
@register.filter(name="change_str2")
def change_str(value, args=None):
    if type(value) != str:
        return value

    result = "[6折,双11当天3折]" + value
    if args == 1:
        result = '【毛折扣啊。赔死了】' + value
    elif args == 2:
        result = "【不在淘宝卖了,清仓处理。1折起】" + value
    return result


# 注册方式2,装饰器,默认不传参数可以使用函数名作为过滤器名称
@register.filter
def bold_str(value):
    return "<b>%s</b>" % value


# 注册方式1:把change_str函数注册为过滤器
register.filter("change_str", change_str)
# register.filter(name="change_str", filter_func=change_str)

 

2.使用
第一步:在使用的html文件中导入之前创建的 xx.py 文件名
{% load xx %}

自定义标签的用法:
{% my_simple_time 1 2 3%} {# 函数名 参数#}


自定义过滤器的用法:
{{ 参数 | ya }}

转载于:https://www.cnblogs.com/duzhe96/p/10069030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值