Jinja 2-是可变字符串还是数组?

时间:2019-06-20 09:33:13

标签: python jinja2

我正在用jinja2做一个Web应用程序。而且我目前正在尝试使用数组中的元素配置HTML select元素。

数组中的每个元素可以是一个字符串,也可以是包含2个元素的数组:一个字符串和一个数字(即标识符)。

我想根据元素的类型采取不同的行动。这就是我尝试过的:

    <select {{ "disabled" if Permission.WRITE not in field_permissions }} >
        {% for e in field_data.enum %}
            {% if e is iterable %}
                <option value="{{ e[1] }}">{{ e[0] }}</option>
            {% else %}
                <option value="{{ loop.index - 1 }}">{{ e }}</option>
            {% endif %}
        {% endfor %}
    </select>

但是永远不会执行“ else”条件,因为字符串元素似乎被标识为可迭代元素,所以我的单词被截断了:

Select buggued

您有解决方案可以帮助我吗? :)

谢谢

1 个答案:

答案 0 :(得分:1)

您可以只检查e是否为字符串:

<select {{ "disabled" if Permission.WRITE not in field_permissions }} >
    {% for e in field_data.enum %}
        {% if e is string %}
            <option value="{{ loop.index - 1 }}">{{ e }}</option>
        {% else %}
            <option value="{{ e[1] }}">{{ e[0] }}</option>
        {% endif %}
    {% endfor %}
</select>