Django: "current_tags" не является допустимой библиотекой тегов

У меня есть небольшой проект Django, который я получил от друга. Код отлично работает в его системе. Однако в моей системе я получаю следующее сообщение об ошибке при запуске сервера:

TemplateSyntaxError в /

'current_tags' не является допустимой библиотекой тегов: библиотека шаблонов current_tags не найдена, попробовал django.templatetags.current_tags

Проблема заключается в строке в файле html:

{% load current_tags %}

Этот точный код работает в его системе без ошибок. Что это может быть?

Ответ 1

Я бы предложил следующее:

  • (Скорее всего) Вы не установили одну из зависимостей вашей библиотеки тегов. Проверьте импорт внутри модуля current_tags.py.

  • Убедитесь, что приложение, содержащее библиотеку тегов, зарегистрировано в settings.py под INSTALLED_APPS.

  • Убедитесь, что вы успешно импортируете библиотеку тегов.

    python manage.py shell
    >>> from app.templatetags import current_tags
    

    Это приводит к тому, что рекомендует следующая ссылка, которая заключается в том, что сама ошибка, как правило, вводит вас в заблуждение относительно того, где она ищет шаблон. Он молча игнорирует ошибки при импорте, что означает, что current_tags.py может иметь синтаксическую ошибку или другую причину, по которой он вызывает ImportError.

Если все остальное не удается, проверьте эту ссылку: http://www.b-list.org/weblog/2007/dec/04/magic-tags/

Ответ 2

У меня была эта проблема и исправлена ​​ее добавлением пустого файла __init__.py в каталог appname/templatetags/.

Ответ 3

Возможности много:

  • У вас не reset ваш dev сервер.
  • У вас есть цикл зависимостей в файле templatetag.
  • с ошибкой что-то (каталог, папка, имя шаблона в 'load' и т.д.).
  • Вы забыли о добавлении приложения в INSTALLED_APPS.

Ответ 4

Перезапустить сервер решил проблему для меня. Они должны были упомянуть об этом в документации.

Ответ 5

Я получал ту же ошибку, но по другой причине, поэтому я скажу вам (в случае, если кто-то другой сталкивается с той же проблемой).

У меня все было правильно, но у меня был свой собственный тег внутри папки с именем template_tags, и после долгого поиска я узнал, что это должно быть templatetags, и теперь это работает. Итак проверить имя папки точно templatetags.

Ответ 6

предположим, что у вас есть следующая структура:

- Application_Name

------- templatetags

-------------- INIT.py

-------------- templates_extras.py

------- INIT.py

------- settings.py

- manage.py

Вы должны убедиться в следующем:

  • ваше приложение, внутри которого ваши "templatetags" является резидентным, фактически установлено в INSTALLED_APPS в settings.py(например, "Application_Name" )

  • сам тэг-модуль, который существует внутри "templatetags", уже установлен в INSTALLED_APP в settings.py(например, "ApplicationName.templatetags.tempaltes_extras" )

  • убедитесь, что у вас есть init.py "в каталоге templatetags

  • вам необходимо перезагрузить сервер

  • В некоторых случаях вам нужно удалить все сгенерированные *.pyc, если они не работают, затем повторите попытку

Ответ 7

"пользовательские теги" не является допустимой ошибкой библиотеки тегов, чаще всего происходит потому, что пользовательские теги не загружаются в приложение.

поместите пустой init.py внутри той же папки, где размещен ваш "тег настраиваемого шаблона", и запустите указанный ниже код на терминале, чтобы загрузить теги пользовательского шаблона

touch __init__.py

Ответ 8

Пожалуйста, убедитесь, что ваша папка templatetags инициализирована с помощью python, если у вас есть сомнения, просто возьмите bakup из всех файлов,

Удалите все файлы, Внутри папки templatetags создайте файл init.py, затем перезагрузите сервер,

Теперь ваша папка находится под Python, затем сделайте свой материал.

Это работает для меня...

Ответ 9

Для меня это была ошибка размещения котировок вокруг имени библиотеки в теге load.

НЕПРАВИЛЬНО: {% load 'library_name' %}

ПРАВИЛЬНО: {% load library_name %}

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

Ответ 10

Для других, сталкивающихся с этим. Предположим, что ваше имя приложения MyApp, а ваше имя тега templatetags, а затем в settings.py должно быть:

INSTALLED_APPS = [
'MyApp',
'MyApp.templatetags'
]

Вам нужны как ваше приложение django, так и папка вашего тега, находящаяся под вашим приложением.

-> MyApp
    ---> models.py
    ---> views.py
    ---> templatetags
      -----> __init__.py
      -----> app_filters.py

И в вашем файле шаблона:

{% load app_filters %}

Также app_filters.py будет выглядеть как:

# coding=utf-8
from django import template

register = template.Library()


@register.filter(name='get_item')
def get_item(dictionary, key):
    return dictionary.get(key)

проверьте все вышеуказанные шаги, и вы можете найти проблему.

Ответ 11

Убедитесь, что оператор load верен. Это должно быть имя файла, а не имя приложения. Например, если у вас есть это приложение:

appname
├── __init__.py
├── templatetags
│   ├── __init__.py
│   └── foobarfilename.py

Затем вы должны поместить это в свой шаблон:

{% load foobarfilename %}

Конечно, вы должны проверить и другие ответы.

Ответ 12

После создания тега шаблона он должен находиться в пакете templatetags в приложении, установленном в settings.INSTALLED_APPS, убедитесь, что вы перезапустите свой dev-сервер.

Ответ 13

Может кто-то найдет это полезным: как-то я назвал каталог 'templatetags ' вместо 'templatetags', то есть - с пробелом в конце. Взял часы, чтобы наконец понять.

Ответ 14

Все приведенные здесь советы не помогли мне. Поэтому в моем конкретном случае проблема заключалась в том, что templatetag пришлось загружать из стороннего приложения, и я вручную скопировал исходную папку с этим приложением в папку src в моем virtualenv. Затем я запустил python setup.py install внутри этой папки. После этого django не смог загрузить этот модуль.

Затем я удалил исходную и установленную папку этого приложения и установил ее с помощью pip install -r requirements.txt после добавления соответствующей строки в файл requirements.txt. Он был загружен в папку src, установленную, и все начало работать исправно. Надеюсь, это поможет кому-то.

Ответ 15

В моем случае Я создал экземпляр библиотеки, используя переменную тег вместо переменной register

tag = template.Library()

Но это должно быть

register = template.Library()

Чтобы быть допустимой библиотекой тегов, модуль должен содержать модуль-уровень переменный названный регистр, который является экземпляром template.Library, в котором все теги и фильтры зарегистрированы

Ответ 16

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

Я должен был изменить на {% filename %}

Ответ 17

В моем случае это было - я использую

@register.inclusion_tag('template-to-use.html')

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

Template does not exist

но это не так, и это сработало.