Подтвердить что ты не робот

Django 1.10.1 'my_templatetag' не является зарегистрированной библиотекой тегов. Должен быть одним из:

Я хочу, чтобы меню было настроено в зависимости от того, в какой группе вы состоите. Я использую Django 1.10.1, allauth и так далее. Когда я пытаюсь сделать мой templatetag, он терпит неудачу, и он говорит: ¨

TemplateSyntaxError at /
'my_templatetag' is not a registered tag library. Must be one of:
account
account_tags
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
socialaccount
socialaccount_tags
static
staticfiles
tz

'my_templatetag.py' выглядит так:

from django import template
from django.contrib.auth.models import Group


register = template.Library()

@register.filter(name='has_group')
def has_group(user, group_name):
    group =  Group.objects.get(name=group_name)
    return group in user.groups.all()

и tha ошибка входит в мой .html файл, который говорит:

{%  load my_templatetag %}

Я пытался перезапустить сервер, как миллионы раз, также я попытался изменить все имена, и это приложение является частью INSTALLED_APPS в settings.py. Что я делаю неправильно?

4b9b3361

Ответ 1

Помимо размещения my_templatetag.py внутри app_name/templatetags, вы должны перезапустить сервер разработки Django (или убедиться, что он перезагружен сам) каждый раз, когда вы изменяете теги шаблонов. Если сервер не перезагружается, Django не будет регистрировать теги.

Ответ 2

Из 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':{
            'my_templatetag': 'app.templatetags.my_templatetag',

            }
    },
},

]

Ответ 3

Убедитесь, что вы не пропустили ни одного из следующих шагов:

  • Создайте папку с именем templatetags на том же уровне, что и models.py и views.py в папке вашего приложения

  • Ваше приложение должно быть в INSTALLED_APPS в settings.py

  • В папке templatetags должна быть __init __. py

  • Перезагрузите сервер django

Ответ 4

В моем случае проблема была в том, что я использовал {% load filter_method_name %}

Мне пришлось изменить на {% load filename %}

Затем мне пришлось перезапустить сервер.

Ответ 5

Где хранится файл my_templatetag.py? Он должен храниться в каталоге с именем templatetags, который находится внутри приложения.

Пожалуйста, смотрите: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/, если это не так.

Ответ 6

Перезагрузите сервер django. Он работал у меня после установки папки templatetag в приложении и template_name.py в папке templatetag.

Ответ 7

Я знаю, что это немного устарело, но я столкнулся с той же проблемой сегодня. Я нашел решение в документации: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

Приложение должно содержать каталог templatetags на том же уровне, что и models.py, views.py и т.д. Если его еще нет, создайте его - не забудьте файл __init__.py, чтобы убедиться, что каталог обрабатывается как пакет Python.

Просто скопировав файл __init__.py из другого места в новый каталог templatetag, разобраться.

Ответ 8

поместите my_templatetag.py внутри app_name/templatetags, затем создайте init.py внутри app_name/templatetags.. Затем откройте терминал в папке проекта, дайте команду python manage.py shell

from app_name.templatetags import my_templatetag

Ответ 9

вы просто вырезаете/удаляете свой код, который написан внутри (например, templatetags/home.py) из home.py вы удалите свой код и перезапустите свой сервер и снова вставьте свой код в home.py, он будет работать.

Ответ 10

Я использую Django 1.11, и у меня была такая же проблема. Некоторые из ответов здесь верны, но некоторые вещи могут отсутствовать. Вот что я сделал:

Цитирование предыдущего пользователя:

Создайте папку с именем "templatetags" на том же уровне, что и models.py и views.py в папке вашего приложения

Ваше приложение должно быть в INSTALLED_APPS в settings.py

Папка templatetags должна иметь init.py

Но, прежде чем перезапустить сервер Django, добавьте это в файл, содержащий теги:

from django import template
register = template.Library()

Затем вы можете перезапустить сервер.

Ответ 11

В случае, если это кому-то помогает, проблема в моем случае заключалась в том, что я использовал кавычки при попытке загрузить тег (ы)

{%  load 'my_templatetag' %}  <!-- incorrect -->

вместо

{%  load my_templatetag %}  <!-- correct -->

Примечание: extends нужны кавычки вокруг имени файла, но не load