#python #django #templates
#python #django #шаблоны
Вопрос:
Я написал 2 пользовательских тега шаблонов в Django. Цель состоит в том, чтобы использовать один пользовательский тег внутри другого. Разрешено ли это? Шаблон для пользовательского «внешнего» тега выглядит следующим образом:
<ul>
{% for type in types %}
{% custom_internal_tag param1 %}
{% endfor %}
</ul>
Что после рендеринга приводит к
Недопустимый тег блока: ‘custom_internal_tag’, ожидаемый ‘пустой’ или ‘endfor’
Разрешены ли вложенные пользовательские теги? Что может быть причиной такой ошибки?
Ответ №1:
Они определенно разрешены, но эта ошибка может возникнуть из-за того, что ваш пользовательский тег неправильно определен, расположен или загружен.
Убедитесь, что все ваши пользовательские теги расположены в вашем app/templatetags
каталоге и загружены правильно, обычно с помощью @register
декоратора.
Reference: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#registering-custom-filters
Комментарии:
1. Действительно, мой шаблон для внешнего тега не содержал кода {% load internal_tag %}.
2. В моем случае — когда некоторые пользовательские теги включают другие пользовательские теги, скажем:
{% tag_from_lib1 %} {% tag_from_lib2 %} {% endtag_from_lib1 %}
— Мне пришлось сначала загрузитьlib2
, а затемlib1
, т. Е. Мне пришлось перейти{% load lib2 lib1 %}
на{% load lib2 %} {% load lib1 %}
. В противном случае возникает ошибка «недопустимый тег блока».