Django 自定义过滤器

时间:2022-05-12 12:05:00

设定自定义过滤器之前要现在配置文件内把自己项目名在 INSTALLED_APPS 内导入

#已安装的django应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#将自己的应用,填充到配置文件中去
'mysite'
]

在settings.py文件同级目录中建立templatetags目录用于存放自定义过滤器的py文件

自定义过滤器的相应操作

#导包
#导入模板模块
from django import template #注册过滤器对象
register = template.Library() #自定义过滤器
#在django内部,通过装饰器的方式来注册自定义过滤器
@register.filter
def my_str(val):
return "$" + val #定义一个双参数的过滤器
@register.filter
def my_str_two(val,p1):
return val + p1 #定义一个多参数的过滤器
#注册过滤器的时候,需要注册simple_tag
@register.simple_tag
def my_str_many(val,p1,p2):
return val + p1 +p2 #定义一个取余数的过滤器
@register.filter
def get_line(val):
return int(val) % 2

定义好的自定义过滤器文件在html文件导入过滤器文件后即可直接调用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>自定义过滤器的使用</title>
<style> table{
border: 1px solid red;
padding: 30px;
}
tr{
border: 1px solid blueviolet;
}
.tr2{
background-color: brown;
}
.tr1{
background-color: goldenrod;
} </style>
</head>
<body> {# 导入过滤器文件 #}
{% load my_filter %} {{ test_str | my_str }} <br> {{ test_list }} <br> {{ test_list | length }} <br> {# 两个参数,进行调用 #}
{{ '你好' | my_str_two:'不好' }}<br> {# 调用多参数的过滤器 #}
{% my_str_many "你好" "不好" "啊" %}<br> {# 使用逻辑判断 #} {% if test_int == 100 %}
等于一百
{% else %}
不等于一百
{% endif %}<br> {% if test_int > 100 %}
大于
{% elif test_int < 100 %}
小于
{% else %}
等于
{% endif %} </body>
</html>