使用Flask向HTML添加属性的有效方法是使用较少的代码行来选择元素?

问题描述 投票:0回答:1

我有一个select元素,如果这个信息已经存在,我想从数据库填充。例如,这就是我为性别做的事情:

<select class="form-control" id="gender">
    <option value="-5">Not Selected</option>
    {% if current_user.gender == 0 %}
      <option value="0" selected>Male</option>
    {% else %}
      <option value="0">Male</option>
    {% endif %}

    {% if current_user.gender == 1 %}
        <option value="1" selected>Female</option>
    {% else %}
        <option value="1">Female</option>
    {% endif %}
</select>

现在我有另外一个select元素有6个不同的选项(所有选项都是整数值0,1,2 ... 5)。有没有办法让它更简洁,而不是用每个if语句编写30行代码?

html flask attributes jinja2
1个回答
1
投票

是的,jinja2模板中有循环。

例如,如果你有一个包含所有选择选项的python列表:

options = ['option1', 'option2', 'option3', ...]

<select class="form-control" id="gender">

{% for option in options %}
<option value="{{ loop.index }}" 
{% if current_user.gender == loop.index %}
selected
{% endif %}
>{{ option }}</option>
{% endfor %}
<option value="-5">Not Selected</option>

</select>

loop.index表示循环的当前迭代。 (1索引)

这是一个例子,但是当您遍历从数据库获得的对象时,还有其他一个例子:

objects = [object1, object2, object3, ...]

<select class="form-control" id="gender">

{% for object in objects %}
<option value="{{ object.value }}" 
{% if object.value == current_user.gender %}
selected
{% endif %}
>{{ object.name }}</option>
{% endfor %}
<option value="-5">Not Selected</option>

</select>
© www.soinside.com 2019 - 2024. All rights reserved.