2012-03-19 44 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)