2012-03-19 76 views
0

在jinja模板中有什么方法可以同时渲染多个流?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 #} 

回答

0

无法渲染到多个流。一个简单的解决办法是调用两次模板,用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)