Domanda

Questo è preso direttamente dal mio modello Django:

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

Ho commentato il {% cycle%} perché lo uso solo per impostare " cls " a " giorno ultimo " ogni terza iterazione nel ciclo. Esiste un modo migliore per farlo senza aggiungere alcun codice alla vista? (La gente dice che la logica dovrebbe rimanere fuori dai modelli, ma farlo al contrario è quasi peggio.)

È stato utile?

Soluzione

Non sono sicuro di capire perché hai un problema, poiché la tua soluzione attuale sembra funzionare. Non penso che tu abbia bisogno dei commenti HTML, dal momento che {% cycle%} con come non produce nulla, ma a parte ciò sembra a posto.

Tuttavia, se desideri un altro modo per farlo, puoi utilizzare il filtro divisibleby :

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

ma non penso che questo sia migliore di quello che hai già.

Altri suggerimenti

"Novità nella versione di sviluppo di Django"

Il tag ciclo 'as' ora ha una modalità 'silenziosa':

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

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

La logica dell'applicazione non dovrebbe essere nei tuoi modelli. La logica di presentazione appartiene lì (che è ciò che sembra essere). Lo metterei lì.

Ummm ... ecco a cosa serve il tag cycle . Non ho idea del motivo per cui stai cercando di evitarlo, ma dovresti sapere:

  1. Qualsiasi logica che richiede l'applicazione selettiva di alcune regole richiederà codice Python, poiché il codice modello non viene assegnato alle variabili.
  2. Il codice python deve essere chiamato da un templatetag o visualizzare la logica della funzione.

Quindi se non usi la logica di visualizzazione, sei bloccato con un templatetags. O scrivi tu stesso o ne usi uno integrato. ciclo sembra essere più facile di qualsiasi altro. Qual è il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top