Django - «помощники» не являются допустимой библиотекой тегов

Следуя руководству по Пользовательские теги и фильтры шаблонов, я получаю эта ошибка:

'helpers' is not a valid tag library: Template library helpers not found, tried django.templatetags.helpers,django.contrib.staticfiles.templatetags.helpers,django.contrib.admin.templatetags.helpers

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

Структура папки:

container/
  module/
    templatetags/
      __init__.py
      helpers.py
    templates/
      ...
    ... (views, models, ...)
  system/
    ... (urls, settings, ...)

В system/settings.py включен модуль:

INSTALLED_APPS = (
    ...
    'module',
)

Мой вспомогательный источник не вызывает никаких ошибок синтаксиса или импорта из оболочки django:

from django import template
register = template.Library()

@register.filter
def myhelper(value):
    return value

Наконец, шаблон, вызывающий myhelper, выглядит просто:

{% load helpers %}
{{ "hello"|myhelper }}

Почему это не работает?


person ldiqual    schedule 06.06.2012    source источник
comment
Похоже, ваша система не может найти нужный модуль. Глядя на сообщение об ошибке, он говорит: django.templatetags.helpers,django.contrib.staticfiles.templatetags.helpers,django.contrib.admin.templatetags.helpers. Он ничего не говорит о module.templatetags. Вы уверены, что запись в INSTALLED_APPS верна? Что-нибудь еще работает в модуле-приложении, когда вы его запускаете?   -  person Mikael    schedule 06.06.2012
comment
есть ли какой-нибудь helpers.pyc файл внутри templatetags ??   -  person Priyank Patel    schedule 06.06.2012
comment
@Mikael: да, я могу без проблем запускать другие шаблоны из того же модуля.   -  person ldiqual    schedule 06.06.2012
comment
@PriyankPatel: никаких признаков такого файла: S   -  person ldiqual    schedule 06.06.2012
comment
это означает, что django не может найти templatetags внутри вашего модуля.   -  person Priyank Patel    schedule 06.06.2012
comment
@PriankPatel: так в чем здесь проблема?   -  person ldiqual    schedule 06.06.2012
comment
Попробуйте запустить это в оболочке django: from django.db.models import get_apps; get_apps() Вы видите там свой module?   -  person DrTyrsa    schedule 06.06.2012
comment
@DrTyrsa: да, есть module.models.   -  person ldiqual    schedule 06.06.2012
comment
Попробуйте другое имя для тегов шаблона. Возможно, у вас уже есть каталог 'помощников' где-то еще.   -  person sergzach    schedule 06.06.2012
comment
@sergzach: Вот и все! Я не знаю почему, но изменение имени помощника сработало. Если у кого-то есть объяснение, я был бы рад узнать что-нибудь :)   -  person ldiqual    schedule 06.06.2012


Ответы (1)


Благодаря идее sergzach я смог заставить свой фильтр работать, переименовав его файл с helpers.py на somethingelse.py.


Редактировать

У Django есть собственные помощники для создания страницы администратора. Это было бы причиной конфликтов имен.

person ldiqual    schedule 06.06.2012
comment
Примите ответ, чтобы закрыть вопрос - person Vivek S; 06.06.2012
comment
@viveksoundrapandi: Я это знаю, но могу принять только через два дня. - person ldiqual; 06.06.2012
comment
Я думаю, это было связано с тем, что у django.contrib.admin есть хелперы. Или что-то близкое. - person sergzach; 06.06.2012