Jinja 模板块中的嵌套块和 for 循环

nested block and for loop in a Jinja template block

尝试在 Jinja 模板块设置中使用嵌套块和 for 循环。

{% block main %}
<table>
<tr>
<td>user id</td>
<td>user sec level</td>
</tr>
    {% block main_nested_b scoped %}
    {%
    for user in list_users:
        t_id_user = str(user[0][0])
        t_sec_level = str(user[2][0])
    %}
<tr>
<td>
<a href='/usersEdit?id_user={{ t_id_user }}' class='onwhite'>edit</a>
</td>
</tr>
    {% endfor %}
    {% endblock main_nested_b %}
{% endblock main %}
</table>

错误信息:

jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got 't_id_user'

帮忙?

您不能将 Jinja 语法视为 Python 语法。这不是一回事。保持你的 for tag separate from assignment (set) tags:

    {% for user in list_users %}
        {% set t_id_user = user[0][0] %}
        {% set t_sec_level = user[2][0] %}

请注意 for ... in ... 语法末尾甚至没有 :!此外,您不需要在这里调用 str() ,将其留给 Jinja 为您转换为字符串;在您使用 {{ t_id_user }}{{ t_sec_level }} 的任何地方,该值都会被转换为字符串。

这是完整的模板:

<table>
{% block main %}
    {% block main_nested_b scoped %}
    {% for user in list_users %}
        {% set t_id_user = user[0][0] %}
        {% set t_sec_level = user[2][0] %}
<tr>
<td>
<a href='/usersEdit?id_user={{ t_id_user }}' class='onwhite'>edit</a>
</td>
</tr>
    {% endfor %}
    {% endblock main_nested_b %}
{% endblock main %}
</table>