2011-02-07 15 views
14

Voglio mettere un'interruzione e continuare nel mio codice, ma non funziona nel modello Django. Come posso usare continue e break usando il template Django per loop. Ecco un esempio:Come posso utilizzare l'interruzione e continuare nei modelli 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

Devi essere più chiaro. Si tratta di un problema Python o di un modello di django? Normalmente i modelli non dovrebbero avere tale logica in essi. Puoi pubblicare un semplice esempio con un codice? – Spacedman

+2

Dovrai mostrarci il codice che non funziona e spiegare come fallisce (ad esempio copiando l'esatto messaggio di errore nella tua domanda). –

+0

% per i in i_range%} {% per frequenza in patient_meds.frequency%} {% ifequal frequency i%} {{i}} AM {{forloop.parentloop | continue}} ////// I does'nt work {continue} ////// Inoltre non funziona {% endifequal%} {% endfor%} {{i}} AM {% endfor%} – GoldenBird

risposta

24

For-loop in modelli di Django sono diversi da Python pianura per-loop, in modo continue e break non funziona in loro. Guarda tu stesso nel Django docs, non ci sono tag modello break o continue. Data la posizione generale di Keep-It-Simple-Stupid nella sintassi dei template di Django, probabilmente dovrai trovare un altro modo per ottenere ciò che ti serve.

+2

questo è vero, ma è come una limitazione, non KISS. la rottura è semplice. esempio: interrompi il ciclo principale iterato se qualsiasi loop annidato produce abbastanza elementi - molto utile e semplice con interruzioni nel modello - sistema di template accurato come mako o ghepardo hanno supporto per pausa/continua. –

+0

@ups nell'esempio che hai dato potresti semplicemente usare il tag template 'slice' (esempio:' list | slice: ": 10" ') per limitare il loop a un certo numero di iterazioni, o anche farlo a il livello di contesto. – guival

Problemi correlati