自定义模板过滤器

简介: 自定义模板过滤器

自定义模板过滤器

{
  { 参数1|过滤器的名 }}
{
  { 参数1|过滤器:参数2 }}

虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。

过滤器实际上就是python中的一个函数,只不过是把这个函数注册到模板库中,以后在模板中就可以使用这个函数了。但是这个函数的参数有限制,第一个参数必须是这个过滤器需要处理的值,第二个参数可有可无,如果有,那么就意味着在模板中可以传递参数。并且过滤器的函数最多只能有两个参数。

自定义过滤器的步骤:

  1. 首先在某个app中,创建一个python包,叫做templatetags,注意,这个包的名字必须为templatetags,不然就找不到。
  2. 在这个templatetags包下面,创建一个python文件用来存储过滤器。
  3. 在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数永远是被过滤的那个值,并且如果在使用过滤器的时候传递参数,那么还可以定义另外一个参数。但是过滤器最多只能有2个参数。
  4. 在写完过滤器(函数)后,要使用django.template.Library.filter进行注册,文件my_filter.py。

    from django import template
    register = template.Library()
    
    def greet(value,word):
        return value + word
    
    register.filter("greet",greet)
    
  5. 还要把这个过滤器所在的这个app添加到settings.INSTALLED_AAPS中,不然Django也找不到这个过滤器。
  6. 在模板中使用load标签加载过滤器所在的python包。(文件index.html)
    {% load my_filter %}
    
  7. 可以使用过滤器了。
  8. django.template.Library.filter还可以当作装饰器来使用。如果filter函数没有传递任何参数,那么将会使用这个函数的名字来作为过滤器的名字。当然如果你不想使用函数的名字来作为过滤器的名字,也可以传递一个name参数。
目录
相关文章
|
1月前
|
安全 Python
Flask过滤器与自定义过滤器的用法
Flask过滤器与自定义过滤器的用法
20 4
|
6月前
|
存储 弹性计算 运维
自定义问候语
【4月更文挑战第30天】
53 0
|
6月前
|
存储 Python
自定义模板过滤器
【2月更文挑战第26天】自定义模板过滤器。
29 1
|
Unix 关系型数据库 程序员
自定义伟大👑
C语言作为一种经典而强大的编程语言,在计算机科学领域有着广泛的应用。它的简洁性、高效性以及跨平台特性使得C语言成为了开发系统级软件、嵌入式系统以及大规模应用程序的首选。本文将介绍C语言的起源和发展,分析其特点和优势,同时讨论一些常见的应用场景和实例
过滤器简介--操作步骤--过滤器生命周期--过滤器匹配规则-- 过滤器链
过滤器简介--操作步骤--过滤器生命周期--过滤器匹配规则-- 过滤器链
65 0
|
JavaScript 开发者
过滤器-定义私有过滤器|学习笔记
快速学习过滤器-定义私有过滤器
116 0
过滤器-定义私有过滤器|学习笔记
|
数据安全/隐私保护
过滤器 - 基础篇
过滤器 - 基础篇
182 0
过滤器 - 基础篇
|
运维 Kubernetes 安全
DO447使用过滤器和插件转换器--使用查找模板化外部数据
DO447使用过滤器和插件转换器--使用查找模板化外部数据
240 1
DO447使用过滤器和插件转换器--使用查找模板化外部数据