jinja2如果声明不起作用

时间:2014-06-06 21:21:05

标签: python if-statement jinja2

我有一个jinja2 if语句,我正在检查字典项是否等于id,但它似乎从来没有正确评估它或者根本没有。

这是我的if声明:

<select id="deviceTypes" class="inputBoxes" style="height: 25px;">
    {% for key, value in deviceTypes.iteritems() %}
        {% if deviceTypeID == key %}  --> deviceTypeID is defined but this block of code never runs (key is an integer value, it's the id of the option)
            <option value="{{key}}" selected>{{deviceTypeID}}</option>
        {% else %}
            <option value="{{key}}">{{value}}</option>
        {% endif %}
    {% endfor %}
</select>

2 个答案:

答案 0 :(得分:1)

您的deviceTypeID很可能是从请求中获取的,而仍然是一个字符串。确保它是一个整数:

{% if deviceTypeID|int == key %}

或者更好的是,当你从请求中获取它时,将它变成一个整数。许多Web框架允许您在检索时将值转换为整数; Flask允许你这样做:

deviceTypeID = request.form.get('deviceTypeID', type=int)

例如。

答案 1 :(得分:0)

你可以尝试在支票上添加'not'吗?这将告诉您条件是否为false

{%if if deviceTypeID == key%}

答案:

{% if not deviceTypeID == key %}
    <option value="{{key}}">{{value}}</option>
{% else %}   
    <option value="{{key}}" selected>{{deviceTypeID}}</option>
{% endif %}