Django: 'current_tags' не является допустимой библиотекой тегов - PullRequest
74 голосов
/ 31 марта 2011

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

TemplateSyntaxError at /

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

Проблема в строке в html-файле:

{% load current_tags %}

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

Ответы [ 17 ]

80 голосов
/ 31 марта 2011

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

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

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

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

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

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

Если ничего не помогло, проверьте эту ссылку: http://www.b -list.org / блог / 2007 / Декабрь / 04 / магия-теги /

74 голосов
/ 03 сентября 2011

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

62 голосов
/ 09 октября 2012

Возможностей много:

  1. Вы не сбросили свой сервер dev .
  2. У вас есть цикл зависимостей в файле templatetag.
  3. Вы что-то неправильно написали что-то (каталог, папка, имя шаблона в 'load' и т. Д.).
  4. Вы забыли о добавлении приложения в INSTALLED_APPS .
11 голосов
/ 08 января 2017

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

6 голосов
/ 06 февраля 2014

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

- Application_Name

------- templatetags

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

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

------- INIT .py

------- settings.py

- manage.py

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

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

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

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

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

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

6 голосов
/ 19 июня 2013

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

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

5 голосов
/ 19 февраля 2015

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

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

touch __init__.py
3 голосов
/ 20 июля 2016

Для меня было ошибкой помещать кавычки вокруг имени библиотеки в теге load.

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

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

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

3 голосов
/ 28 февраля 2015

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

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

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

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

3 голосов
/ 29 июня 2017

Для тех, кто сталкивается с этим.Предположим, ваше имя приложения 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)

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

...