django-自定义过滤器

警告
本文最后更新于 2020-10-14 11:15,文中内容可能已过时。

官方文档: https://docs.djangoproject.com/zh-hans/3.1/howto/custom-template-tags/

1.创建目录

在应用目录下,创建templatetags目录,并创建一个filters.py文件,名字自定义。

2.编辑filters.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from django import template


register = template.Library()


# 无参数,模板调用时使用函数名即可,例{{ 2|mod }}
@register.filter  
def mod(num):
    """判断num是否为偶数"""
    return num % 2 == 0


# 为过滤器命名,模板调用的时候使用这个名字,例{{ 'OK'|my_lower }}
@register.filter(name="my_lower")  
def lower(v):
    """转换为小写"""
    return v.lower()


# 多参数的过滤器,只是举个例子
@register.filter
def replace(value, arg):
    """删除字符串中的字符,可以指定次数"""
    args = eval(arg)
    old = args[0]
    count = args[1]
    return value.replace(old, '', count)

3.编写模板

load: 填写的是py文件名

1
2
3
4
5
6
7
{% load filters %}

{{ 2|mod }}

{{ "OK"|my_lower }}

{{ "helloworld"|replace:"('o',1)" }}

更多使用方法可以查看内置过滤器是怎么定义的 lib/python3.6/site-packages/django/template/defaultfilters.py

请我喝杯水
SoulChild 微信号 微信号
SoulChild 微信打赏 微信打赏
0%