详解在Python的Django框架中创建模板库的方法

Felix
Felix
发布时间:2026-10-12| 2人浏览过
原创

本文详细介绍在Django中创建和使用自定义模板库的步骤。从决定应用位置、配置INSTALLED_APPS,到创建templatetags目录及模块,再到通过register变量注册过滤器和标签,涵盖核心操作与安全机制,帮助开发者高效扩展Django模板功能。

无论是开发自定义标签还是过滤器,首要任务是构建Django能够识别并导入的基本模板库结构。

构建模板库主要包含两个关键步骤:

首先,确定模板库所属的Django应用。若已通过 manage.py startapp 命令创建了应用,可直接将模板库置于该应用下;也可选择为模板库单独创建一个应用。推荐采用后一种方式,因为此类过滤器或标签可能在未来的项目中复用。

无论采取哪种方式,务必确保将该应用添加到 INSTALLED_APPS 配置中,具体原因将在后续说明。

其次,在对应的Django应用包内创建 templatetags 目录。该目录应与 models.py、views.py 等文件处于同一层级。例如:

books/
  __init__.py
  models.py
  templatetags/
  views.py

在 templatetags 目录下创建两个空文件:一个是 __init__.py(标识该目录为包含Python代码的包),另一个用于存放自定义标签或过滤器的定义文件。第二个文件的名称将在后续加载标签时使用。例如,若自定义标签/过滤器定义在名为 poll_extras.py 的文件中,需在模板中使用如下语句:

{% load poll_extras %}

{% load %} 标签会检查 INSTALLED_APPS 中的配置,仅允许加载已安装Django应用中的模板库。这是一种安全机制,允许在一台计算机上部署多个模板库代码,而无需向所有Django安装暴露这些代码。

如果编写的模板库不与任何特定模型或视图关联,创建一个仅包含 templatetags 包的Django应用程序包是完全合理的。templatetags 包中可放置任意数量的模块。需要注意的是,{%load%} 语句是通过指定的Python模块名(而非应用名)来加载标签或过滤器的。

创建Python模块后,只需根据目标是编写过滤器还是标签,编写相应的Python代码即可。

作为合法的标签库,模块必须包含一个名为 register 的模块级变量。该变量是 template.Library 的实例,用于存储所有注册的标签和过滤器数据结构。因此,请在模块顶部插入以下语句:

from django import template

register = template.Library()

注意

建议阅读Django默认过滤器和标签的源代码,其中包含大量示例。相关文件分别为:django/template/defaultfilters.py 和 django/template/defaulttags.py。此外,django.contrib 中的某些应用程序也包含模板库。

创建 register 变量后,即可利用它来创建模板的过滤器和标签。

相关标签:

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

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 算法库。