【问题标题】:How to create a custom templatetag in my django project如何在我的 django 项目中创建自定义模板标签
【发布时间】:2020-10-30 19:14:45
【问题描述】:

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

这是我的结构化项目:

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

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

模板:{% load poll_extras %}

但我得到了这个

【问题讨论】:

  • 您需要将其添加到一个应用程序,然后将该应用程序添加到INSTALLED_APPS

标签: python django


【解决方案1】:

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

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

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

此应用应该是已安装的应用,因此您在INSTALLED_APPS setting [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,而不是一个模板标签

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 1970-01-01
    • 2013-10-29
    • 2021-09-30
    • 2013-01-17
    • 2015-01-20
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多