无效的块标记'设置',预期'空'或者' endfor'。您是否忘记注册或加载此标记?

时间:2017-10-13 11:00:09

标签: django jinja2

我在Django 1.11上工作,在我的模板文件中我得到了这段代码:

{% 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 %}

Django给我发了这个错误:

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?

你有个主意吗? 询问您是否需要更多信息(例如我的设置文件)。

谢谢!

2 个答案:

答案 0 :(得分:3)

set不是django中的有效标记。如果要在模板中定义变量,则应使用with

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

但是,在python的视图中进行这种操作总是更好。

答案 1 :(得分:1)

上面的解决方案是正确的,但有一个小错误。变量和它的值之间不应该是空格,所以正确的sintaxis应该是:

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