Django: 'tag' не является зарегистрированной ошибкой библиотеки тегов - PullRequest
1 голос
/ 27 января 2020

У меня ошибка при загрузке пользовательского тега в моем шаблоне. Я посетил множество тем на эту тему и убедился, что не допустил некоторых распространенных ошибок:

  • Файл, содержащий теги, находится в папке 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

Может кто-нибудь сказать мне, что я сделал не так? Заранее спасибо!

1 Ответ

2 голосов
/ 27 января 2020

Вам необходимо добавить эту библиотеку тегов в настройках (для 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',

            }
    },
}]

Вы можете прочитать подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...