Jinja несколько потоков рендеринга - PullRequest
0 голосов
/ 19 марта 2012

Есть ли какой-либо способ в шаблоне jinja отображать одновременно несколько потоков?

Допустим, я хочу сделать (печатный) тест, сначала все вопросы, а затем все ответы в конце.Каждый тип вопроса (множественный выбор, совпадение, пропущенное слово) представляет собой отдельный шаблон.

Очевидно, что я могу сделать два прохода и задать вопрос и ответ в отдельных шаблонах.Но я хотел бы сделать это за один проход, чтобы сохранить хорошо организованные шаблоны, а также сделать код вызова Python более регулярным, без особого случая для обработки этой ситуации).

То, что я хотел бы иметь что-то вроде нескольких «потоков», похожих на блоки, но которые накапливают выходные данные нескольких шаблонов.Очевидно, что нижеследующее - это фантазия, но есть ли другой способ сделать это у дзиндзя?

{% streams x, y %}  {# define twp streams x and y #}
{% stream x %}
aaaa
{% endstream %}

{% stream y %}
bbbb
{% endstream %}

{% stream x %}
cccc
{% endstream %}

{% stream y %}
dddd
{% endstream %}

{{ x }}  {# renders aaaacccc #}
{{ y }}  {# renders bbbbdddd #}

1 Ответ

0 голосов
/ 19 марта 2012

Рендеринг в несколько потоков невозможен. Простым решением было бы дважды вызвать шаблон с логическим аргументом question и использовать выражения if для переключения между кодом вопроса и ответа:

{% if questions %}
aaaa
{% else %}
bbbb
{% endif %}

{% if questions %}
cccc
{% else %}
dddd
{% endif %}

Тогда вы вызываете шаблон:

questions_html = template.render(questions=True)
answers_html = template.render(questions=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...