2011-02-07 235 views
14

私は休憩を入れて、私のコードで続行したいが、それはDjangoのテンプレートでは動作しません。どのようにDjangoテンプレートforループを使ってcontinueとbreakを使うことができますか?ここでは一例です:forループのDjangoテンプレートでDjangoテンプレートでbreakとcontinueを使用するにはどうすればいいですか?

{% for i in i_range %} 
{% for frequency in patient_meds.frequency %} 
{% ifequal frequency i %} 
<td class="nopad"><input type="checkbox" name="frequency-1" value="{{ i }}" checked/> {{ i }} AM</td> 
{{ forloop.parentloop|continue }} ////// It doesn't work 
{ continue }      ////// It also doesn't work 
{% endifequal %} 
{% endfor%} 
<td class="nopad"><input type="checkbox" name="frequency-1" value="{{ i }}"/> {{ i }} AM</td> 
{% endfor %} 
+0

あなたはより明確にする必要があります。これはPythonの問題かDjangoのテンプレートの問題ですか?通常、テンプレートにはそのようなロジックは含まれません。いくつかのコードで簡単な例を投稿できますか? – Spacedman

+2

動作しないコードを表示し、エラーの原因を説明しなければなりません(たとえば、正確なエラーメッセージを質問にコピーするなど)。 –

+0

%for i_range%} {patient_meds.frequency%の頻度の%} {%ifequal frequency i%} {{i}} AM {{forloop.parentloop |続行}} ////// I does'nt仕事{継続} //////また、仕事{%endif%} {%endfor%} {{i}} AM {%endfor%} – GoldenBird

答えて

24

は、forループ無地のPythonとは異なりますので、continuebreakは彼らに動作しません。 Django docsで自分自身を参照してください、breakまたはcontinueテンプレートタグがありません。 Djangoのテンプレート構文でKeep-It-Simple-Stupidの全体的な位置付けを考えると、おそらく必要なものを達成する別の方法を見つける必要があります。

+2

は本当ですが、KISSではなく制限のようです。休憩は簡単です。 例:ネストされたループがあればループを止めてループを止めてください - 非常に便利でシンプルなテンプレートです - makoやcheetahのようなきれいなテンプレートシステムはbreak/continueをサポートしています。 –

+0

あなたが与えた例の中の@upsはテンプレート・タグ 'slice'(例:' list | slice: ":10" ')を使ってループを特定の反復数に制限したり、コンテキストレベル。 – guival

37

ジャンゴは自然にサポートしていません。

カスタムフィルタを使用してforloop | continueおよびforloop | breakを実装できます。

http://djangosnippets.org/snippets/2093/

関連する問題