模板语法-变量渲染之自定义过滤器

虽然官方已经提供了许多的内置过滤器,但是还会存在不足,例如:希望输出用户的手机号码时,中间几位用*代替(18627382773--->186*****773),这时我们就需要自定义过滤器,需要声明自定义过滤器并且能在模板中正常使用,需要完成以下工作。记不住以后直接按照下面步骤用就可以了

  1. 当前使用和声明过滤器的子应用必须在setting.py配置文件中的INSTALLED_APPS中注册注:也可以直接写子应用的名字,如图子应用为app01,直接写app01即可,但建议还是写app01.apps.App01Config
  2. 在子应用中新建一个python包,名字必须为templatetags(必须包含__init__.py)
  3. 在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:]
  4.  在所要使用自定义过滤器的模板文件最前面需要加入{% 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>

 

posted @ 2022-12-11 16:59  A熙  阅读(28)  评论(0)    收藏  举报