2017-10-13 8 views
1

Je travaille sur Django 1.11 et dans mon fichier de modèle que j'ai ce code:Balise de bloc invalide 'set', 'empty' ou 'endfor'. Avez-vous oublié d'enregistrer ou de charger cette balise?

{% for article in all_articles %} 
    {% set color_category = 'light-blue' %} 
    {% if article.category == 'SEO' %} 
     {% color_category = 'light-blue' %} 
    {% elif article.category == 'SEA' %} 
     {% color_category = 'amber' %} 
    {% elif article.category == 'Python' %} 
     {% color_category = 'green' %} 
    {% elif article.category == 'Django' %} 
     {% color_category = 'light-green' %} 
    {% else %} 
     {% color_category = 'light-blue' %} 
    {% endif %} 
{% endfor %} 

Et Django m'a retourné cette erreur:

Exception Type: TemplateSyntaxError 
Exception Value:  
Invalid block tag on line 12: 'set', expected 'empty' or 'endfor'. Did you forget to register or load this tag? 

Avez-vous une idée? Demandez si vous avez besoin de plus d'informations (comme mon fichier de paramètres).

Merci!

+1

Qu'est-ce que vous essayez de faire? Les modèles Django n'ont pas de balise 'set' et ne prennent pas en charge l'affectation. –

+0

Dans Flask je pouvais faire un set dans Jinja2, mais je ne savais pas que Django ne le supportait pas. Je veux juste déclarer une variable à mon avis pour ajouter une couleur sur une étiquette spécifique sans faire un multiple code If/html. – Zoloom

+0

Je ne savais pas à propos de FLask mais je sais django Donc vous pouvez faire des templatetags pour cela et charger ce fichier templatetags en haut de la page de modèle? Pouvez-vous partager le code associé à {% get%}? –

Répondre

1

set n'est pas une balise valide dans django. Vous devez utiliser with si vous souhaitez définir une variable dans votre modèle.

{% with color_category = 'light-blue' %}  
    Do stuff 
{% endwith %} 

Cependant, il est toujours préférable de faire ce genre d'opération dans la vue en python.

0

La solution ci-dessus est correcte, mais avec une erreur mineure. Il ne devrait pas y avoir d'espace entre la variable et sa valeur, donc la syntaxe correcte devrait être:

{% with color_category='light-blue' %}  
    Do stuff 
{% endwith %}