4

在我的模板中加载自定义标签时出现此错误。我已经访问了许多有关此的主题,并确保确认我没有犯一些常见错误:

  • 包含标签的文件位于templatetags文件夹中。
  • templatetags文件夹包含一个__init__.py文件。
  • 该应用程序actualites位于INSTALLED_APPS设置列表中。
  • {% load mes_tags %}在模板的开头使用。

这是我的应用程序的文件结构:

actualites/
    __init__.py
    SOME FILES
    templatetags/
        __init__.py
        mes_tags.py

mes_tags.py

from django import template

register = template.Library()

@register.simple_tag(takes_context=True)
def param_replace(context, **kwargs):
    d = context['request'].GET.copy()
    for k, v in kwargs.items():
        d[k] = v
    for k in [k for k, v in d.items() if not v]:
        del d[k]
    return d.urlencode()

我得到的错误如下:

TemplateSyntaxError at /
'mes_tags' is not a registered tag library. Must be one of:
LIST OF TAGS

有人可以告诉我我做错了什么吗?提前致谢 !

4

1 回答 1

9

您需要在设置中添加此标签库(对于 Django >= 1.9):

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    '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',
            'app.apptemplates.load_setting',

        ],

        'libraries':{
            'custom_templatetag': 'actualites.templatetags.mes_tags',

            }
    },
}]

你可以在这里阅读更多

于 2020-01-27T13:47:25.293 回答