Django自定义模板过滤器

本文介绍如何在Django项目中使用自定义过滤器解决模板显示问题,包括创建过滤器的过程及在模板中的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        django 在views中有数据需要通过字典(dict)的方式传递给template,该字典中又包含了字典,而且字典中的键值还是一个对象,在template中处理传递过来的数据的时候,字典不能通过键值的方式取出原有数据,对象不能通过(.)的方式直接取出数据,通过大量地查阅资料,最终通过过滤器(filter)的方式解

在应用中创建templatetags目录,当前示例为”booktest/templatetags“,创建init文件,内容为空

在”booktest/templatetags“目录下创建filters.py文件,代码如下

# coding=utf-8
# 引入模板语言的库类
from django.template import Library

# 创建实例对象
register = Library()

# 将函数注册成过滤器,函数mod就可以在模板中当作过滤器使用
@register.filter
def mod(num):
    return num % 2

在templates/booktest/guolvqi.html中,使用自定义过滤器

首先使用load标签引入模块

<ul>
{% load filters %}
    {% for book in blist1 %}
        {% if forloop.counter|mod %}
        <li style="background-color: red;">{{ book.btitle }}</li>
        {% else %}
        <li style="background-color: blue;">{{ book.btitle }}</li>
        {%endif %}
    {% endfor %}

</ul>

输出效果为:


当Django内置过滤器满足不了我们的需求时,可以通过自定义过滤器来实现






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值