在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 #}
无法渲染到多个流。一个简单的解决方案是使用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)