0

我在模板标签文件夹内的 apptags.py 文件中制作了一个自定义模板标签,模板标签文件夹在我的应用程序文件夹内,代码如下

from django import template
import datetime
register=template.Library()
@register.simple_tag(name="get_date")
def get_date():
    now = datetime.datetime.now()
    return now

我在我的 html 文件中使用它作为

% load static %}
{% load apptags %}
{% get_date as today %}
<h2>Today is {{today}} </h2>

它显示以下错误:

/exam/show-test/ 'apptags' 处的 TemplateSyntaxError 不是已注册的标签库。必须是以下之一: admin_list admin_modify admin_urls cache i18n l10n log static tz

PS :- Templatetag 是一个包,因为我在其中创建了一个init .py 文件

4

2 回答 2

0

您需要在项目settings.py文件中添加模板标签,以便 Django 识别它。

将此添加到您OPTIONSTEMPLATESinsettings.py文件的条目中:

'libraries':  {
                '<template_tag name>': '<App_name>.templatetags.<template_tag name>',
            }

例子:

'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'libraries':  {
                'dict_key': 'blogs.templatetags.dict_key',
            }
于 2021-06-27T08:56:41.797 回答
0

根据django 文档

该应用程序应该包含一个 templatetags 目录,与 models.py、views.py 等处于同一级别。如果这还不存在,请创建它 - 不要忘记init .py 文件以确保该目录被视为一个 Python 包

在您的情况下,文件夹名称是 templatetag 是错误的
,因此您应该将其重命名为 templatetags 。
否则你应该按照@Ram的回答为:

或者,模板标签模块可以通过 'libraries' 参数注册到 DjangoTemplates。如果您想在加载模板标签时使用与模板标签模块名称不同的标签,这很有用。它还使您无需安装应用程序即可注册标签

于 2022-01-21T15:07:16.640 回答