You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Jinja2模板嵌套错误?endfor标签语法报错排查

Jinja2模板语法错误排查与修复

错误信息

File "templates/admin.html", line 187, in template
    {% endfor %}
jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'endfor'. You probably made a nesting mistake.
Jinja is expecting this tag, but currently looking for 'elif' or 'else' or 'endif'. The innermost block that needs to be closed is 'if'.

问题模板代码

{% for fd in foods %}
<div class="list__item">
    <span>{{ fd.food_name }}</span>
    <div class="switch-btn"></div>
</div>
{% endfor %}
</div>
<div class="order__container">
    {% for order in orders %}
            {% if order.ready_status|string() == new_order|string() %}
                <div class="order__item orange">
                    <span class="order__num">Заказ № {{ order.id }}</span>
                    <span class="order__elem">{{ order.food.food_name }}-{{ order.food_counter }}</span>
                    <span class="order__sum">Итог {{ order.total_price }}</span>
                </div>
            {% if order.ready_status|string() == adopted|string() %}
                <div class="order__item green">
                    <span class="order__num">Заказ № {{ order.id }}</span>
                    <span class="order__elem">{{ order.food.food_name }}-{{ order.food_counter }}</span>
                    <span class="order__sum">Итог {{ order.total_price }}</span>
                </div>
            {% else %}
                <div class="order__item blue">
                    <span class="order__num">Заказ № {{ order.id }}</span>
                    <span class="order__elem">{{ order.food.food_name }}-{{ order.food_counter }}</span>
                    <span class="order__sum">Итог {{ order.total_price }}</span>
                </div>
            {% endif %}
    {% endfor %}
</div>
    </div>

错误原因

模板中if标签的嵌套逻辑存在错误:第二个条件判断使用了独立的{% if %}标签,而非{% elif %},导致第一个if块始终未被闭合。Jinja2解析器在处理到{% endfor %}时,仍在等待闭合第一个if块,因此抛出语法错误。

修复方案

将第二个{% if %}替换为{% elif %},确保整个条件判断是一个完整的块结构:

{% for fd in foods %}
<div class="list__item">
    <span>{{ fd.food_name }}</span>
    <div class="switch-btn"></div>
</div>
{% endfor %}
</div>
<div class="order__container">
    {% for order in orders %}
            {% if order.ready_status|string() == new_order|string() %}
                <div class="order__item orange">
                    <span class="order__num">Заказ № {{ order.id }}</span>
                    <span class="order__elem">{{ order.food.food_name }}-{{ order.food_counter }}</span>
                    <span class="order__sum">Итог {{ order.total_price }}</span>
                </div>
            {% elif order.ready_status|string() == adopted|string() %}
                <div class="order__item green">
                    <span class="order__num">Заказ № {{ order.id }}</span>
                    <span class="order__elem">{{ order.food.food_name }}-{{ order.food_counter }}</span>
                    <span class="order__sum">Итог {{ order.total_price }}</span>
                </div>
            {% else %}
                <div class="order__item blue">
                    <span class="order__num">Заказ № {{ order.id }}</span>
                    <span class="order__elem">{{ order.food.food_name }}-{{ order.food_counter }}</span>
                    <span class="order__sum">Итог {{ order.total_price }}</span>
                </div>
            {% endif %}
    {% endfor %}
</div>
    </div>

内容的提问来源于stack exchange,提问作者Axel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:45:31