我有一个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行代码?
是的,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>