Django 自定义过滤器
设定自定义过滤器之前要现在配置文件内把自己项目名在 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>