Переменная цикла Jinja недоступна в шаблонах include-d

У меня есть код, похожий на следующий, в одном из моих шаблонов jinja

{% for post in posts %}
    {% include ["posts/" + post.type + ".html", "posts/default.html"] %}
{% endfor %}

, который должен отображать каждое сообщение внутри сообщений Коллекция , в зависимости от .type сообщения. У меня разные настройки шаблона для каждого post.type . А для тех, у кого нет шаблона, он возвращается к шаблону сообщения по умолчанию .

Теперь я хочу, чтобы индекс сообщения отображался снизу внутри шаблонов сообщений, который предоставляется loop.revindex . Но по какой-то причине, если я использую loop.revindex внутри шаблона сообщения, я получаю сообщение об ошибке UndefinedError: 'loop' is undefined .

Итак, цикл недоступен в шаблонах include d? Это задумано? Я что-то делаю неправильно с тем, как я организовал свои шаблоны, чтобы это было недоступно?

Edit Хорошо, я придумал обходной путь, в цикле for, прежде чем включать свой шаблон, я делаю

{% set post_index = loop.revindex %}

и используйте post_index внутри шаблона сообщения. Не идеально, но кажется единственным выходом. Тем не менее, я все еще хочу знать ваши решения.

Edit 2 Еще одна вещь: я могу получить доступ к переменной post внутри шаблона include d, но не к переменной loop .

12
задан Charles 22 January 2012 в 15:35
поделиться