解决Python Flask使用Jinja2模板时出现“expected token 'name', got 'integer'”错误
错误产生原因
- Jinja2模板语法中,
is是测试运算符,仅用于调用测试函数(如is defined、is number),后接必须是标识符类型的测试名称,不能直接跟整数、字符串等字面量。你的代码中写{% if content.index is 3 %}时,解析器期望is后接名称类token,实际读取到整数3,因此触发对应token错误。
修复方案
根据你的实际业务需求二选一即可:
- 若判断逻辑为
content对象自带的index属性值等于3,直接将is替换为相等比较运算符==:
{% for content in contents %} <div> *some divs here* {{content}} </div> {% if content.index == 3 %} <div> *some contents inside* </div> {% endif %} {% endfor %}
- 若判断逻辑为当前循环迭代到第3次,需要使用Jinja2内置的循环变量
loop.index(从1开始计数,首次循环值为1),如果需要从0开始计数可替换为loop.index0:
{% if loop.index == 3 %} <div> *some contents inside* </div> {% endif %}
内容的提问来源于stack exchange,提问作者user16421569
相关产品推荐
相关产品推荐

