jinja2:在select标记内分组数据

2024-09-30 03:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下列表,我通过Flask传递给jinja2模板:

names = ['Joe', 'Lilly', 'Damion', 'Stephanie', 'Justin']

我在遍历这个列表并将数据分组到一个select标记内的不同optgroups。在

金贾2:

^{pr2}$

但是,这会为下拉列表中的每个名称创建一个新标签。我只想在一个下拉列表中打印一个名字。我该怎么做?在

编辑:我尝试了以下代码,但没有成功。在

<select id="names">
  {% for n in names %}
    <optgroup label='Males'>
      {% if n == 'Joe' or n == 'Damion' or n == 'Justin' %}
        <option value='{{ n }}'>{{ n }}</option>
      {% endif %}
    </optgroup>
    <optgroup label='Females'>
      {% if n == 'Lilly' or n == 'Stephanie' %}
        <option value='{{ n }}'>{{ n }}</option>
      {% endif %}
    </optgroup>
  {% endfor %}
</select>

Tags: or列表ifnamesvalueselectlabeloption
1条回答
网友
1楼 · 发布于 2024-09-30 03:22:28

我同意这样的评价:这真是个糟糕的设计。但要解决您遇到的问题,您必须在名称上循环两次:

<select id="names">
  <optgroup label='Males'>
    {% for n in names %}
      {% if n == 'Joe' or n == 'Damion' or n == 'Justin' %}
        <option value='{{ n }}'>{{ n }}</option>
      {% endif %}
    {% endfor %}
  </optgroup>
  <optgroup label='Females'>
    {% for n in names %}
      {% if n == 'Lilly' or n == 'Stephanie' %}
        <option value='{{ n }}'>{{ n }}</option>
      {% endif %}
    {% endfor %}
  </optgroup>
</select>

相关问题 更多 >

    热门问题