自定义过滤器的文件:
在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件
这个 templatetags 名字是固定的,myfilter 是自己起的
myfilter.py:
from django import template register = template.Library() @register.filter(name="sleep") # name 是 html 中的过滤器名 def sleep(arg): return "%s is sleep" %arg
views.py:
from django.shortcuts import render, redirect, HttpResponse from app01 import models # Filter 测试 def filter_test(request): name = "Jack" return render(request, "filter_test.html", {"name": name})
filter_test.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Filter 测试</title> </head> <body>
<!-- 这里需要导入自定义的 filter --> {% load myfilter %} {{ name|sleep }} </body> </html>
运行结果:
定义含参数的 filter:
myfilter.py:
from django import template register = template.Library() @register.filter(name="sleep") def sleep(arg): return "%s is sleep" %arg @register.filter(name="eat") def eat(arg, arg1): return "%s is eating %s" %(arg, arg1)
filter_test.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Filter 测试</title> </head> <body> {% load myfilter %} {{ name|sleep }} <br> {{ name|eat:"meat" }} </body> </html>
运行结果: