如何使用 HTML <select>
从 flask - render_template
预填充的下拉列表.
这是 <select>
从 Flask-jinja2 预填充的下拉列表。
<div>
<select class="test-default" id="testTime">
{% for option in options %}
<option value={{ option }}>{{ option }}</option>
{% endfor %}
</select>
</div>
test.html
中的脚本,
function fetch_test_data(){
let test = $("#testTime").val();
axios({
method:"get",
url:"/test",
params: {
test
}
}).then(function (response) {
$(document.body).html(response.data)
});
}
和test.py
文件 - 带有应用程序路线和 options
用于下拉菜单。
@app.route('/test', methods=["GET"])
@login_required
def transactions_view():
options = ["0","7","14","30"]
return render_template("test.html", options=options)
上面的例子中如何使用selected
属性来显示所选值。
当选择一个值时, 正确的值返回到 flask 并渲染回来。但是下拉可视化/列表显示第一个值而不是所选值?
我尝试过的:
我可以获得 dropdown
select
用于定义的下拉列表。
defined-dropdown
- 供引用
<div>
<select class="test-default" id="testTime">
<option value=0>today</option>
<option value=7>week</option>
<option value=14>fortnight</option>
<option value=30>month</option>
</select>
</div>
{{ time }}
我可以使用上面的下拉菜单来实现:
<div>
<select class="test-default" id="testTime">
<option value=0 {% if time == 0 %} selected="selected" {% endif %}>today</option>
<option value=7 {% if time == 7 %} selected="selected" {% endif %}>week</option>
<option value=14 {% if time == 14 %} selected="selected" {% endif %}>fortnight</option>
<option value=30 {% if time == 30 %} selected="selected" {% endif %}>month</option>
</select>
</div>
哪里{{ time }}
从 test.py 返回
@app.route('/test', methods=["GET"])
@login_required
def transactions_view():
time = (request.args.get("test"))
return render_template("test.html", time=time)
最佳答案
您必须将 transactions_view()
中选定的时间传递给模板,并在渲染过程中测试每个选项的值。
首先,在 test.py
中,您必须像这样修改 transactions_view()
:
@app.route('/test', methods=["GET"])
@login_required
def transactions_view():
options = (
(0, 'today'),
(7, 'week'),
(14, 'fortnight'),
(30, 'month'),
)
default_time = 0
selected_time = int(request.args.get('time', default_time))
return render_template("test.html", options=options, selected_time=selected_time)
这里我们将 options
变量作为键标签对的元组,selected_time
变量保存来自 GET
的所选时间的值code> 请求或默认值。这两个变量都已传递给 render_template
函数,因此我们可以在模板文件中访问它们。
在 test.html
模板文件中,您必须修改 for
循环,如下所示:
<div>
<select class="test-default" id="testTime">
{% for time, label in options %}
<option value="{{ time }}" {% if time == selected_time %}selected="selected"{% endif %}>{{ label }}</option>
{% endfor %}
</select>
</div>
这里我们测试每个选项的time
值是否是选定的时间,并相应地设置selected
属性。
关于javascript - 选择 flask 后不显示下拉选择的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60272839/