Jinja 2 - переменная строка или массив? - PullRequest
2 голосов
/ 20 июня 2019

Я делаю веб-приложение с jinja2.И в настоящее время я пытаюсь настроить элемент выбора HTML с элементами внутри массива.

Каждый элемент внутри массива может быть строкой или массивом, содержащим 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 Ответ

1 голос
/ 20 июня 2019

Вы можете просто проверить, является ли 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...