自定义模板过滤器

简介: 自定义模板过滤器

自定义模板过滤器

{
  { 参数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参数。
目录
相关文章
|
8月前
|
NoSQL Java 数据库连接
微服务——MongoDB实战演练——技术选型
本节主要介绍技术选型中的两个重要工具:**mongodb-driver** 和 **SpringDataMongoDB**。其中,mongodb-driver 是 MongoDB 官方提供的 Java 驱动包,用于连接和操作 MongoDB 数据库,功能类似 JDBC 驱动。通过官方示例可快速上手。而 SpringDataMongoDB 是 Spring 生态的一员,封装了 mongodb-driver,提供了更简洁的 API,方便开发者在 Spring 环境中操作 MongoDB。两者各有优势,可根据实际需求选择合适的技术方案。
148 2
|
大数据 关系型数据库 数据库
python 批量处理大数据写入数据库
python 批量处理大数据写入数据库
693 0
|
数据采集 JSON 数据挖掘
利用Python实现自动化数据清洗和转换
数据清洗和转换是数据分析的重要步骤。在数据分析工作中,我们常常需要处理不规范、重复、缺失或错误的数据。本文介绍如何使用Python编程语言实现自动化数据清洗和转换,为数据分析工作提供高效的支持。
|
编解码 程序员 开发者
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
10850 0
|
Java Spring
Spring Boot 启动报错解决:No active profile set, falling back to default profiles: default
Spring Boot 启动报错解决:No active profile set, falling back to default profiles: default
901 0
|
jenkins Linux 应用服务中间件
Publish over SSH部署应用到linux
Publish over SSH部署应用到linux
Publish over SSH部署应用到linux
|
C语言
【C】循环(一看就懂)——while、for、do while、goto
【C】循环(一看就懂)——while、for、do while、goto
1161 0
【C】循环(一看就懂)——while、for、do while、goto
|
存储 缓存 关系型数据库
更快的查询 | MySQL百万数据优化(索引调优)
mysql百万数据查询优化, 索引调优, 索引失效等问题 , 这篇文章来为你解答
575 0
|
数据安全/隐私保护
数字加密
数字加密
345 0
|
存储 SpringCloudAlibaba druid
SpringCloud Alibaba核心组件Nacos【认识和安装Nacos&快速入门】第1章
该篇文章主要介绍了:什么是nacos,nacos下载安装一些操作的步骤以及过程中的问题,最后服务消费方和提供方快速入门nacos
SpringCloud Alibaba核心组件Nacos【认识和安装Nacos&快速入门】第1章