模板语法-变量渲染之自定义过滤器
虽然官方已经提供了许多的内置过滤器,但是还会存在不足,例如:希望输出用户的手机号码时,中间几位用*代替(18627382773--->186*****773),这时我们就需要自定义过滤器,需要声明自定义过滤器并且能在模板中正常使用,需要完成以下工作。记不住以后直接按照下面步骤用就可以了
- 当前使用和声明过滤器的子应用必须在setting.py配置文件中的INSTALLED_APPS中注册
注:也可以直接写子应用的名字,如图子应用为app01,直接写app01即可,但建议还是写app01.apps.App01Config - 在子应用中新建一个python包,名字必须为templatetags(必须包含__init__.py)
![]()
- 在templatetags包目录下创建一个任意名称的py文件,在里面写过滤器函数(函数名自己取)
- 创建的py文件
![]()
- 在所创建的py文件中必须引用template和加上注册函数
from django import template register = template.Library() - 必须加上装饰器register.filter(“XXX”),装饰器中的参数名字自己随便起
@register.filter("mobile") - 最后再写过滤器函数
from django import template register = template.Library() @register.filter("mobile") def mobile_fmt(content): return content[:3]+"*****"+content[-3:]
- 创建的py文件
- 在所要使用自定义过滤器的模板文件最前面需要加入{% load 过滤器的py文件 %},然后再进行使用,这里使用过滤器的名称为装饰器的名称
{% load phone_hide %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h3>手机号隐藏显示</h3> <p>手机号:{{ my_tel|mobile }}</p> </body> </html>
注:也可以直接写子应用的名字,如图子应用为app01,直接写app01即可,但建议还是写app01.apps.App01Config

浙公网安备 33010602011771号