2012-03-19 19 views
0

ジンジャーテンプレート内に複数のストリームに同時にレンダリングする方法はありますか?ジンジャー複数のレンダリングストリーム

私は(印刷可能な)クイズを最初にすべての質問で、最後にすべての回答を最後に表示したいとします。それぞれのタイプの質問(複数選択、一致、欠落単語)は異なるテンプレートです。

明らかに私は2つのパスを取ることができ、質問と回答は別々のテンプレートで行うことができます。しかし、私はテンプレートを整理した状態に保つために、そしてこの状況を処理する特別なケースなしに、Python呼び出しコードをより規則的にするために、1回のパスでこれをやりたいと思います。

ブロックに似ていますが、複数のテンプレートの出力を蓄積する複数の 'ストリーム'のようなものがあります。明らかに以下はファンタジーですが、これを行うためにジンジャーの中に別の方法がありますか?

{% 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) 
関連する問題