html - 使用 Flask 向 HTML 添加属性的有效方法,使用更少的代码行来选择元素?
问题描述
我有一个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 模板中有 for 循环。
例如,如果您有一个包含所有选择选项的 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>
推荐阅读
- html - 如何使用 watir 和 children / xpath 来单击按钮?
- android - 无法让 expo 在 android 模拟器 (macOS) 上运行
- java - 数组越界异常,Mac上的JTable但不是windows?
- php - 如何从 bash 文件运行 Laravel 项目?
- postgresql - PostgreSQL,Postgis 几何字段
- javascript - 无法使用 JQuery 显示隐藏元素
- tensorflow - TensorFlow js VS TensorFlow 精简版
- android - 为什么Android在添加新片段时会调用片段的onDestroyView?
- android - 为什么应用程序在后退按钮上关闭 - Flutter
- python - 网络学的不多