2011-02-07 12 views
14

Chcę umieścić break i kontynuować w moim kodzie, ale nie działa w szablonie Django. W jaki sposób mogę używać kontynuowania i łamać przy użyciu szablonu Django dla pętli. Oto przykład:Jak mogę użyć podziału i kontynuować w szablonach Django?

{% 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

Musisz być jaśniejszy. Czy jest to problem z pythonem lub problem z szablonem django? Zwykle szablony nie powinny zawierać w sobie takiej logiki. Czy możesz podać prosty przykład z jakimś kodem? – Spacedman

+2

Będziesz musiał pokazać nam kod, który nie działa i wyjaśnić, w jaki sposób zawodzi (na przykład kopiując dokładny komunikat o błędzie na twoje pytanie). –

+0

% for i in i_range%} {% dla częstotliwości in patient_meds.frequency%} {% ifequal frequency i%} {{i}} AM {{forloop.parentloop | continue}} ////// I doesnt work {continue} ////// To też nie działa {% endifequal%} {% endfor%} {{i}} AM {% endfor%} – GoldenBird

Odpowiedz

24

for-pętle w szablonach Django różnią się od zwykłego Pythona na pętle, więc continue i break nie będzie działać w nich. Zobacz sam w Django docs, nie ma znaczników szablonów break lub . Biorąc pod uwagę ogólną pozycję Keep-It-Simple-Stupid w składni szablonu Django, prawdopodobnie będziesz musiał znaleźć inny sposób osiągnięcia tego, czego potrzebujesz.

+2

To prawda, ale to jak ograniczenie, nie KISS. Przerwa jest prosta. przykład: zatrzymaj iterację pętli głównej, jeśli jakakolwiek zagnieżdżona pętla tworzy wystarczającą ilość elementów - bardzo przydatna i prosta z podziałem na szablony - staranny system szablonów, taki jak mako lub gepard, ma obsługę przerwania/kontynuowania. –

+0

@ups w podanym przykładzie możesz po prostu użyć znacznika szablonu 'slice' (example:' list | slice: ": 10" '), aby ograniczyć pętlę do pewnej liczby iteracji, lub nawet zrobić to na poziom kontekstu. – guival

Powiązane problemy