自定义Django过滤器标签
django的过滤器很多,自带的过滤器能满足我们绝大部分的工作要求,但是当我们有特别的需求的时候就需要自定义了。
创建templatetags文件夹
注意,这个文件夹的名字是唯一的,不能更改成其他名字,文件夹在创建完成之后会新建一个__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 %}
- 使用的时候还是跟系统的过滤器是一样的用法