Django自定义模板过滤器及标签

1.自定义模板过滤器

代码布局

a. app目录下的名为 templatetags 的文件夹,名字是规定好的.这个文件夹必须是一个Python的包,这个文件下一定有一个__init__.py的文件

b.自定义的模板标签,或模板过滤器就放在这个包下的python模块中(python的脚本文件)

c.app必须在settings中被注册

定义和布局

a.自定义过滤器就是一个python函数,它有一个或两个参数.

b.第二个参数 是一个普通参数,可以是默认参数,也可以不要这个参数

第一个模板过滤器

注册

from django.template import Library

register = Library()  # 必须用register这个变量名


def my_male(value):
    """
    转换性别的过滤器
    :param value:
    :return:
    """
    map = {
        '0': '女',
        '1': '男'
    }

    return map[value]

# 注册
register.filter(my_male)

在模板中使用

load标签,引入自定义的过滤器模块,也就是templatetags包里的那个python文件

{% load teacher_filters %}
......
<td>{{ student.sex|my_male }}</td>

注意: 新建了templatetags文件夹要重启一下Django服务

效果图

2.自定义模板标签

标签类型

1.简单标签

django.template.Libray.simple_tag()

接受许多参数

a.创建和注册

在模板引用

 

效果图

模板标签就是一个函数

<p>当前时间: {% current %}</p> # 跟普通函数的传参一样, 字符串, 模板变量, 关键字传参
<p>当前时间: {% current format_str %}</p> # 这里的format_str是一个模板变量
<p>当前时间: {% current format_str='%Y-%m-%d' %}
<p>当前时间: {% current '%Y-%m-%d' %}</p>

一样可以出现效果

b.使用上下文管理

在自定义标签中,使用当前模板中的上下文变量context

2.包含标签

通过渲染另外一个模板来展示数据.

a.定义

# 导入模块

from django.template.loader import get_template
# 注册
@register.inclusion_tag('teacher/show_list.html')
def show_list(list_data):
    # 是一个嵌套抱歉,首先展示列表数据
    return {'ls': list_data}

# 注册
# t = get_template('teacher/show_list.html') ==(等同与)  @register.inclusion_tag('teacher/show_list.html')
# register.inclusion_tag(t)(show_list) # 需要一个模板变量   

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值