Django регистрация библиотеки тегов не работает

Я пытаюсь зарегистрировать свою собственную библиотеку тегов шаблонов в django, но, к сожалению, она не работает!

Я хочу создать собственный тег включения и следую инструкции по адресу: https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/

Я создал приложение под названием "tag_lib" (установленное в settings.py) для размещения тегов моего шаблона. В папке приложения находится словарь "templatetags", содержащий пустой __init__.py и мой my_tags.py,

my_tags.py содержит:

from django import template


register = template.Library()


@register.inclusion_tag(filename='navbar.html', takes_context=True)
def navbar_context(context):
    return {
        'some_var': context['some_var'],
    }

Когда я перезагружаю свой devserver и пытаюсь загрузить библиотеку

{% load my_tags %} `

в шаблоне я получаю ошибку:`

TemplateSyntaxError at /

'my_tags' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
static
staticfiles
tz

Есть идеи, где я ошибся?

Благодарю.

5 ответов

Я столкнулся с этой проблемой. То, что я сделал, это просто остановил сервер и снова запустил его. Кажется, что django не инициализирует теги (или ресурсы в целом) во время работы сервера. Надеюсь, это помогает.

Согласно документации django:

Сервер разработки не перезапускается автоматически после добавления модуля templatetags, вам нужно будет перезапустить сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах.

Итак, чтобы решить проблему, вам необходимо перезапустить сервер разработки.

Источник: https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/

Напоминаем, что при использовании django под Windows необходимо перезапустить сервер разработки (python.exe manage.py runserver) как минимум в двух случаях, а именно:

  • когда в приложении был создан новый тег шаблона
  • когда статические файлы были изменены в папке app/static/app/

Надеюсь это поможет

Я столкнулся с той же проблемой, но перезагрузка сервера не работает. Итак, я решил это следующим образом:

в project/setting.py прописал следующее, в TEMPLATE прописал библиотеки:

      TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
    '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',
        ],
        'libraries': {
            'my_tags': 'app.templatetags.blog_tags',
        }
    },
},

]

И сервер перезагрузился сам по себе.

В Django 3.1 я решил поместить свой py-файл в папку templatetags внутри моего приложения. Как сказали документы. пользовательские теги шаблонов . Файл py должен иметь register = template.Library()

myapp/templatetags/mytags.py

в настройках у меня есть myapp внутри массива INSTALLED_APPS

Затем в моем файле шаблона

      {% load mytags %}
Другие вопросы по тегам