Question

Ceci provient directement de mon modèle Django:

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

J'ai commenté le {% cycle%} car je ne l'utilise que pour définir " cls " à " jour dernier " chaque troisième itération dans la boucle. Existe-t-il un meilleur moyen de le faire sans ajouter de code à la vue? (Les gens disent que la logique devrait rester en dehors des modèles, mais l'inverse est presque pire.)

Était-ce utile?

La solution

Je ne suis pas sûr de comprendre pourquoi vous avez un problème, car votre solution actuelle semble fonctionner. Je ne pense pas que vous ayez besoin des commentaires HTML, car {% cycle%} avec en tant que ne génère rien, mais à part ça, ça semble bien.

Toutefois, si vous souhaitez utiliser une autre méthode, vous pouvez utiliser le filtre divisibleby :

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

mais je ne pense pas que ce soit mieux que ce que vous avez déjà.

Autres conseils

'Nouveautés de la version de développement Django'

La balise cycle "en tant que" dispose désormais d'un mode "silencieux":

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

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

La logique de l'application ne doit pas figurer dans vos modèles. La logique de présentation y appartient (ce qu’elle semble être). Je le mettrais là.

Hmm ... c'est à cela que sert la balise cycle . Je ne sais pas pourquoi vous essayez de l'éviter, mais vous devriez savoir:

  1. Toute logique nécessitant l’application sélective de certaines règles nécessitera un code python, car le code de modèle ne permet pas d’affecter des variables.
  2. Le code python doit être appelé à partir d'une balise de modèle ou de la logique de la fonction d'affichage.

Donc, si vous n'utilisez pas la logique de vue, vous vous retrouvez avec un gabarit. Vous écrivez le vôtre ou vous en utilisez un qui est intégré. cycle semble être aussi facile que les autres. Quel est le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top