Django не удалось загрузить тег шаблона - PullRequest
3 голосов
/ 22 декабря 2011

Я создал папку templatetags внутри моего приложения и внутри файла с именем posts.py, я написал следующий код:

from django.template import Library, Node
from advancedviews.models import Post
register = Library()
class AllPost(Node):
    def render(self,context):
        context['all_posts'] =  Post.objects.all()
        return ''
def get_all_posts(parser,token):
    return AllPost()
get_all_posts = register.tag(get_all_posts) 

Теперь я пытаюсь загрузить этот тег шаблона внутри моего приложения.template;

{% load get_all_posts %}

Но это дает мне ошибку, 'get_all_posts' is not a valid tag library: Template library get_all_posts not found, tried django.templatetags.get_all_posts,django.contrib.admin.templatetags.get_all_posts

Что за ошибка в этом шаблоне или я что-то здесь упустил.

Ответы [ 2 ]

6 голосов
/ 22 декабря 2011

С load вам нужно использовать имя библиотеки, а не тег - так что posts в вашем случае.

(я полагаю, у вас также есть пустой __init__.py в каталоге templatetags и что приложение находится в INSTALLED_APPS).

2 голосов
/ 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, если он не работает, затем повторите попытку

...