template标签_Django自定义过滤器与标签

本文介绍了如何在Django中自定义模板过滤器和标签,以处理复杂运算和展示数据。通过创建templatetags目录,定义extend_fun.py文件,我们可以注册如mylower(转换小写)、myjoin(拼接)等过滤器,以及get_latestarticles(获取最新文章)标签。在模板中加载并使用这些自定义功能,可以更灵活地控制视图数据的展示。
摘要由CSDN通过智能技术生成

906dbbe8ae039097d333363f8a9cc06a.png

Django模板的设计初衷是为了展示数据,不适合特别复杂的运算

Django在模板文件中可以使用自带的标签和过滤器来简化模板中的运算,当没有合适的标签或者过滤器时可以进行自定义

一、过滤器与标签的定义

1、在应用目录下方创建模块templatetags (文件夹自动生成__init__.py)

2、在templatetags下方新建 extend_fun.py

3、在extend_fun.py内部实现自定义过滤器(最多支持一个参数)和标签

from django import template
from ..models import Post
# 得到Django负责管理标签和过滤器的类
register= template.Library()

# 注册转换小写的过滤器 
@register.filter
def mylower(value):
    """
    :param value: 应用过滤器的对象
    :return:
    """
    return value.lower()

# 注册拼接过滤器
@register.filter
def myjoin(value,sep):
    """
    :param value: 应用过滤器的对象
    :param sep: 连接符
    :return:
    """
    return sep.join(value)
 

# 注册获取最新文章标签
@register.simple_tag
def get_latestarticles(num=3):
    """
    :param num: 获取最近数量
    :return:
    """
    return Article.objects.all().order_by("-create_time")[:num]

二、在模板汇总使用

1、加载自定义标签与过滤器

{% load extend_fun %}

注意初次定义自定义标签或者过滤器需要重启服务器

{% load extend_fun %}

2、过滤器可以直接使用

{{name|mylower}}  {{name|myjoin:'-'}}

3、对于标签需要先获取内容

# 使用默认参数
{% get_latestarticles as  latestarticles %}
# 传入实参
{% get_latestarticles 5 as  latestarticles %}
{% for a in latestarticles  %}

{% endfor %}

3b152bc17ac7c91f67106816f8ea63ea.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值