Django TemplateSyntaxError: не удалось проанализировать остаток: «{%» из «{%»

Я пытаюсь выполнить цикл внутри цикла for, но возникает ошибка. Какая правильная альтернатива.

{% cycle "{% include 'col-1-of-3.html' %}" "{% include 'col-2-of-3.html' %}" "{% include 'col-3-of-3.html' %}" %}

Ошибка:

TemplateSyntaxError: Could not parse the remainder: '"{%' from '"{%'

person VA splash    schedule 08.03.2020    source источник


Ответы (1)


Просто используйте имя файла для включения в {% cycle … %} тег шаблона [Django-doc] и назначьте его переменной (например, tmp). Затем вы можете использовать эту переменную в {% include … %} тег шаблона [Django-doc]:

{% for variable in loop %}
    {% cycle 'col-1-of-3.html' 'col-2-of-3.html' 'col-3-of-3.html' as tmp silent %}
    {% include tmp %}
{% endfor %}
person Willem Van Onsem    schedule 08.03.2020
comment
TemplateDoesNotExist в /tools-dash/ получил эту ошибку. Три html-файла находятся внутри папки шаблона/инструментов. - person VA splash; 08.03.2020
comment
@VAsplash: вам, конечно, нужно указать правильный путь к шаблонам. Django не просматривает файлы в одном каталоге. Если ваш каталог tools, вместо этого он должен быть tools/col-1-of-3.html (конечно, то же самое для других файлов). - person Willem Van Onsem; 08.03.2020
comment
Это сработало, но для каждого цикла он показывает tools/col-1-of-3.html и другие в html для каждого цикла. - person VA splash; 08.03.2020
comment
@VAsplash: ах да, вам нужно добавить silent в конце {% cycle %}. - person Willem Van Onsem; 08.03.2020