Как создать пользовательский templatetag в моем проекте django

#python #django

#python #django

Вопрос:

Я пытался создать пользовательский templatetag в моем проекте, но он не работает

Это мой структурированный проект :

Я создал папку в своем индексном каталоге с именем templatetags> __init__.py , extras.py , внутри дополнительного файла это:

 from django import template
register = template.Library()
def cut(value):
   return value.replace("no", 'yes')
  

Шаблон: {% load poll_extras %}

но я получил это

Ошибка

Комментарии:

1. Вам нужно добавить его в приложение и добавить это приложение в INSTALLED_APPS .

Ответ №1:

Я создал папку в своем индексном каталоге с именем templatetags > __init__.py , extras.py , внутри дополнительного файла this .

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

 app_name  # ← name of the app
    templatetags/
        __init__.py
        extra.py  

Это приложение должно быть установленным приложением, поэтому вы добавляете имя приложения в INSTALLED_APPS настройках [Django-doc]:

 # settings.py

INSTALLED_APP = [
    # …,
    'app_name',
    # …,
]  

Кроме того, вам необходимо зарегистрировать тег шаблона:

 # app_name/templatetags/extra.py

from django import template
register = template.Library()

@register.tag  # ← register the template tag
def cut(value):
   return value.replace("no", 'yes')  

Вы должны использовать @register.filter , если хотите зарегистрировать фильтр шаблонов, вместо тега шаблона.