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

Flask使用Jinja2模板出现未知'elif'标签语法报错如何解决

Jinja2模板语法报错修复方案

报错根因

jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'elif'. You probably made a nesting mistake. Jinja is expecting this tag, but currently looking for 'endfor' or 'else'. The innermost block that needs to be closed is 'for'.

报错核心是Jinja2模板控制块嵌套逻辑错误:你在if分支内部开启了for循环块,但未添加对应的闭合标签,Jinja解析时会认为后续的elif属于for块的内容,而elif只能作为if块的分支存在,因此触发语法错误。

现存问题清单

  • 控制块未闭合:{% for place in indi: %}没有对应的{% endfor %}闭合标签
  • 语法不规范:Jinja2控制语句(if/for等)末尾不需要加冒号,和Python原生语法有差异
  • HTML标签错配:<h1>Distance in different units</h2>使用h1打开、h2闭合,会导致页面结构解析异常

修复后完整模板代码

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="static/index.css">
        <title>
            Project
        </title>
    </head>
    <body>
        <h3>
            Sample computation
        </h3>
        <p>
            <form action="/hello" method="post">
                Starting Location: <input type="text" name="starting"> 
                Destination: <input type="text" name="destination" />
                <input type="submit" name= "form" value="Submit" />
            </form>
        </p>
        <div>
            {% if status == 0 %}
            <h1>
                Statistics
            </h1>
            <p>
                Directions from {{ firstPlace }} to {{ secondPlace }}
            </p>
            <p>
                Trip duration: {{ individual ["route"]["formattedTime"]}}
            </p>
            <br/>
            <h1>
                Distance in different units
            </h1>
            <p>
                Kilometers: {{ km }} <br/>
                Miles: {{ miles }} <br/>
                Yards: {{ yards }} <br/>
            </p>
            <h2>
                Fuel used in different units
            </h2>
            <p>
                Fuel Used (Ltr): {{ ltr }} <br/>
                Fuel Used (US Gal): {{ usGal }} <br/>
                Fuel Used (Imperial Gal): {{ impGal }} <br/>
            </p>
            <h3>
                Directions
            </h3>
            {% for place in indi %}
            <p>
                {{ place }}
            </p>
            {% endfor %}

            {% elif status == 402 %}
            <p>
                402
            </p>
            {% elif status == 611 %}
            <p>
                611
            </p>
            {% else %}
            <p>
                try again
            </p>
            {% endif %}
            <p>
                end of computation
            </p>
        </div>
    </body>
</html>

可选优化项(非必须,符合HTML规范)

原模板中使用<p>标签嵌套<h1>、<h2>等块级元素不符合HTML规范,会导致浏览器自动拆分标签引发样式异常,修复代码中已经将外层包裹的<p>替换为<div>。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:05