首页 > 解决方案 > 如何在我的 django 项目中创建自定义模板标签

问题描述

我一直在尝试在我的项目中创建一个自定义模板标签,但它不起作用

这是我的结构化项目:

我在我的索引目录中创建了一个名为 templatetags > 的文件夹__init__.py , extras.py,在 extras 文件中:

from django import template
register = template.Library()
def cut(value):
   return value.replace("no", 'yes')

模板:{% load poll_extras %}

但我得到了这个

错误

标签: pythondjango

解决方案


我在我的索引目录中创建了一个文件夹,名为templatetags> __init__.py, extras.py,在 extras 文件中。

您应该将此添加到应用程序中。因此,在根目录中,您拥有应用程序的目录,并在该应用程序目录下创建一个templatetags目录。

app_name  # ← name of the app
    templatetags/
        __init__.py
        extra.py

此应用程序应该是已安装的应用程序,因此您在INSTALLED_APPS设置 [Django-doc]中添加应用程序的名称:

# settings.py

INSTALLED_APP = [
    # …,
    'app_name',
    # …,
]

您还需要注册模板标签:

# app_name/templatetags/extra.py

from django import template
register = template.Library()

@register.tag  # ← register the template tag
def cut(value):
   return value.replace("no", 'yes')

@register.filter如果你想注册一个模板过滤器,而不是模板标签,你应该使用它。


推荐阅读