django自定义过滤器

本文介绍了如何在Django中创建自定义过滤器,包括在应用下创建templatetags包,定义过滤器函数,以及在模板中加载和使用这些过滤器。通过实例展示了如何实现一个判断数字是否为偶数的过滤器。

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

django自定义过滤器(其实就是一个函数)的步骤:

  1. 在应用下建一个python package,名字一定是也只能是templatetags。
  2. 在templatetags包下新建一个文件,文件名可由自己定义。比如我们在此定义一个判断是否为偶数的过滤器,过滤器函数最少一个参数,最多两个参数, 使用如下:filters.py
from django.template import Library

#创建一个Library类的实例对象
register = Library()

#带一个参数的过滤器
@register.filter
def mod(num):
    return num % 2 == 0

#带2个参数的过滤器
@mod_val(num, val):
     return num%val == 0
  1. 在需要自定义标签的模板上,{% load filters %}, 其中filters是自定义的文件名,使用如下:| 前面的数据作为第一个参数,多个参数则需要在自定义过滤器后面加:,使用如下
<!DOCTYPE html>
<html lang="en">
{% load filters %}
<head>
    <meta charset="UTF-8">
    <title>模板标签</title>
    <style>
        .yellow {
            background-color: yellow;
        }

        .orange {
            background-color: orange;
        }
    </style>
</head>
<body>
<h2>带一个参数的自定义过滤器</h2>
<ul>
    {% for b in books %}
        {% if b.id|mod %}
            <li class="yellow">{{ forloop.counter }} ----{{ b.btitle }}</li>
        {% else %}
            <li class="orange">{{ forloop.counter }} ----{{ b.btitle }}</li>
        {% endif %}
    {% endfor %}
</ul>
<hr/>
<h2>带2个参数的自定义过滤器</h2>
<ul>
    {% for b in books %}
        {% if b.id|mod_val:3 %}
            <li class="yellow">{{ forloop.counter }} ----{{ b.btitle }}</li>
        {% else %}
            <li class="orange">{{ forloop.counter }} ----{{ b.btitle }}</li>
        {% endif %}
    {% endfor %}
</ul>
<hr/>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值