自定义Django过滤器标签

django的过滤器很多,自带的过滤器能满足我们绝大部分的工作要求,但是当我们有特别的需求的时候就需要自定义了。


创建templatetags文件夹

自定义Django过滤器标签

注意,这个文件夹的名字是唯一的,不能更改成其他名字,文件夹在创建完成之后会新建一个__init__.py文件,再在此文件夹下面创建一个python文件,这个名字可以自定义

#myfilters.py文件的内容
from django import template
# 创建一个Library类的对象
register = template.Library()

# 自定义过滤器,至少要有一个参数,最多两个参数

@register.filter(name="mod")
def mod(num):
    '''判断num是否为偶数'''
    return num % 2 == 0
@register.filter(name="mod_val")
def mod_val(num,val):
    '''判断nume是否能被val整除'''
    return num%val == 0
  • 过滤器其实就是python的函数
  • 自定义过滤器目前支持1个参数和两个参数的,不支持其他
  • 一个参数就是过滤器前面的变量{% if value|mod%}
  • 完成函数的功能要对函数进行注@register.filter(name=“mod_val”)
<!DOCTYPE html>
{% load  myfilters %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% for value in values %}
    {% if value|mod %}
        {{value}}是偶数<br>
    {% else %}
        {{value}}是奇数数
    {% endif %}
{% endfor%}
</body>
</html>
  • 调用的时候要先导入过滤器的包{% load myfilters %}
  • 使用的时候还是跟系统的过滤器是一样的用法