Jinja多个渲染流

  • 本文关键字:Jinja stream jinja2
  • 更新时间 :
  • 英文 :


在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)

相关内容

  • 没有找到相关文章