Pregunta

Esto se toma directamente de mi plantilla de Django:

{% for day in days %}
  <!-- {% cycle 'day' 'day' 'day last' as cls %} -->
  {% rounded "black" cls %} {# Custom tag giving me rounded borders. #}
  ...
  {% endrounded %}
{% endfor %}

He comentado el {% cycle%} porque solo lo uso para configurar " cls " hasta " último día " cada tercera iteración en el bucle. ¿Hay alguna manera mejor de hacer esto sin agregar ningún código a la vista? (La gente dice que la lógica debe mantenerse fuera de las plantillas, pero tenerla al revés es casi peor).

¿Fue útil?

Solución

No estoy seguro de entender por qué tiene un problema, ya que su solución actual parece funcionar. No creo que necesite los comentarios HTML, ya que {% cycle%} con as no genera nada, pero aparte de eso parece estar bien.

Sin embargo, si desea otra forma de hacerlo, puede usar el filtro divisibleby :

{% for day in days %}
  {% if forloop.counter|divisibleby:3 %}
     {% rounded "black" "day last" %}
  {% else %}
     {% rounded "black" "day" %}
  {% endif %}
{% endfor %}

pero no creo que esto sea mejor de lo que ya tienes.

Otros consejos

'Nuevo en la versión de desarrollo de Django'

La etiqueta del ciclo 'como' ahora tiene un modo 'silencioso':

http://docs.djangoproject.com/en/dev / ref / templates / builtins / # cycle

http://code.djangoproject.com/ticket/13567

La lógica de la aplicación no debería estar en sus plantillas. La lógica de presentación sí pertenece (que es lo que parece ser). Lo pondría allí.

Ummm ... para eso está la etiqueta cycle . No tengo idea de por qué estás tratando de evitarlo, pero debes saber:

  1. Cualquier lógica que requiera la aplicación selectiva de alguna regla requerirá código python, ya que el código de plantilla no se asigna a las variables.
  2. El código de Python debe llamarse desde una etiqueta de plantilla o ver la lógica de la función.

Entonces, si no va a usar la lógica de vista, está atascado con una plantilla de etiquetas. O escribes el tuyo o usas uno incorporado. cycle parece ser tan fácil como cualquier otro. ¿Cuál es el problema?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top