2011-02-07 7 views
14

Quiero poner break y continuar en mi código, pero no funciona en la plantilla de Django. ¿Cómo puedo usar continuar y romper usando la plantilla de Django para el ciclo? Aquí está un ejemplo:¿Cómo puedo usar break y continuar en las plantillas de 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

Necesita ser más clara. ¿Es esto un problema de python o un problema de plantilla django? Normalmente, las plantillas no deberían tener esa lógica en ellos. ¿Puedes publicar un ejemplo simple con algún código? – Spacedman

+2

Deberá mostrarnos el código que no funciona y explicar cómo falla (por ejemplo, al copiar el mensaje de error exacto en su pregunta). –

+0

% para i en i_range%} {% para frecuencia en patient_meds.frequency%} {% ifequal frequency i%} {{i}} AM {{forloop.parentloop | continue}} ////// I did'nt work {continue} ////// Tampoco funciona {% endifequal%} {% endfor%} {{i}} AM {% endfor%} – GoldenBird

Respuesta

24

Para bucles en las plantillas de Django son diferentes de Python llanura de bucles, por lo continue y break no va a funcionar en ellos. Véalo usted mismo en Django docs, no hay etiquetas de plantilla break o continue. Dada la posición general de Keep-It-Simple-Stupid en la sintaxis de la plantilla de Django, probablemente tendrá que encontrar otra forma de lograr lo que necesita.

+2

eso es verdad, pero es como una limitación, no KISS. romper es simple. ejemplo: detenga la iteración del bucle principal si cualquier bucle anidado produce suficientes elementos, muy útil y simple con la plantilla de interrupción, el sistema de plantillas ordenadas como el mako o el guepardo tienen soporte para romper/continuar. –

+0

@ups en el ejemplo que le ha dado, podría simplemente usar la etiqueta de plantilla 'slice' (ejemplo:' list | slice: ": 10" ') para limitar el ciclo a un cierto número de iteraciones, o incluso hacerlo en el nivel de contexto. – guival

Cuestiones relacionadas