Django自定义过滤器定义与用法示例

Evan
Evan
发布时间:2026-10-13| 3人浏览过
原创

本文详解Django中自定义过滤器的两种创建方式:在现有组件templatetags包内或新建独立组件。通过示例展示如何使用@register.filter和@stringfilter修饰器定义过滤逻辑,并在模板中通过{% load %}加载及调用,帮助开发者灵活处理数据展示。

本文详细介绍Django框架中自定义过滤器的定义方法与具体应用案例,供读者参考学习。

一、自定义过滤器的介绍

过滤器本质上是一个函数,接收前端传递的字段值作为参数,经过内部逻辑处理后返回一个新值并展示在页面中。当Django内置过滤器无法满足特定业务需求时,就需要进行自定义开发。

二、Django中自定义过滤器的两种实现方式

1、在已安装的组件(App)中的templatetags目录下创建一个独立的py文件; 2、或者单独创建一个新的组件(App),专门用于存放项目中的所有自定义过滤器。

三、在项目现有组件中创建自定义过滤器

1、该过滤器必须位于已安装的组件(App)中; 2、必须在组件(App)目录下的templatetags包内创建相关文件; 3、定义函数时必须使用修饰器@register.filter
; 4、定义一个处理函数,接收传入的值进行逻辑处理,并返回处理后的新值; 5、完成自定义过滤器的创建。

①. 在templatetags包下创建一个名为poll.py的文件

from django import template
register = template.Library()
@register.filter
def mycut(value,args):
  return value.replace(args,"")

6、 使用自定义过滤器

①. 首先在模板中引入该文件{% load poll %}

②. 在模板标签中直接调用使用

{% load poll %}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <p>{{ msg | mycut:' '}}</p>
</body>
</html>

四、可以自定义一个组件(App)[由于不需要太多的文件,就手动创建一个]

1、手动创建一个新包; 2、在该包中创建一个templatetags的子包; 3、将这个新创建的包在settings.py配置文件中注册注入; 4、在templatetags目录下创建相应的文件及函数; 5、过滤器的使用方式与前述方法相同。

五、补充说明

如果过滤器主要对字符串进行操作,通常建议引入@stringfilter修饰器以增强兼容性。

from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter
def mycut(value,args):
  return value.replace(args,"")
@register.filter
@stringfilter
def mylower(value):
  return value.lower()

希望本文所述内容能对大家掌握Django框架的Python程序设计有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。