Jinja2模板化布尔变量干净利落

时间:2015-04-17 16:29:27

标签: html jinja2

以下代码选择所有3个选项(尽管可能只有一个选项)。

<select id="example-getting-started" name="test" multiple="multiple">
    <option value="cheese" selected="NO">Cheese</option>
    <option value="tomatoes" selected>Tomatoes</option>
    <option value="mozarella" selected="maybe">Mozzarella</option>
    <option value="mushrooms">Mushrooms</option>
    <option value="pepperoni">Pepperoni</option>
    <option value="onions">Onions</option>
</select>

正确地将它转换为Jinja2模板并不难,但它很冗长,并且其大小随着布尔标记的数量呈指数增长。这里有更清洁的解决方案吗?在下面的示例中,pizza_dict是一个python dict,它将每个顶点与布尔值相关联,即是否在披萨上。

   <select id="example-getting-started" name="test" multiple="multiple">
       {% for k in pizza_dict %}
        {% if pizza_dict[k] %}
       <option value="{{ k }}">{{ k }}</option>
        {% else %}
       <option value="{{ k }}" selected>{{ k }}</option>
        {% endif %}
       {% endfor %}
    </select>

1 个答案:

答案 0 :(得分:1)

你能不能简化为:

<select id="example-getting-started" name="test" multiple="multiple">
   {% for k in pizza_dict %}
      <option value="{{ k }}" {% if pizza_dict[k] %}selected{% endif %}>{{ k }}</option>
   {% endfor %}
</select>