我有一个表单,我希望不会在提交时发布(发布)。
我使用<option selected="selected">{{ yourvalue }}</option>
在生成其他选项值之前将值保留在字段中。然后问题是yourvalue
在选择框中重复出现。我可以从填充选项的yourvalue
,list
中删除numbers
,但随着所选值显示在顶部,事情就会出现故障。总的来说,这似乎是一种笨重的方式,可以在提交时保持表单中的选定值。这样做的正确方法是什么?
__ init__py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=["GET", "POST"])
def test():
numbers = [1, 2, 3]
if request.method == "POST":
return render_template('body.html', yourvalue=request.form['number'], numbers=numbers)
return render_template('form.html', numbers=numbers)
app.run()
form.html
<html>
<body>
<form class="form-inline" method="POST" >
<select class="form-control" id="number" name="number" required>
<option value="" disabled selected></option>
<option selected="selected">{{ yourvalue }}</option>
{% for z in numbers %}
<option value="{{ z }}">{{ z }}</option>
{% endfor %}
</select>
<input type="submit" value="Submit">
</form>
{% block body %}{% endblock %}
</body>
</html>
body.html
{% extends "form.html" %}
{% block body %}
You chose {{ yourvalue }}
{% endblock %}
答案 0 :(得分:1)
抱歉,我最初误解了你的问题。你能将HTML改成这样的东西吗?基本上添加一个Jinja If语句来查看'yourvalue'是否与'z'匹配,如果是,则在选项中添加“selected”。
<form class="form-inline" method="POST" >
<select class="form-control" id="number" name="number" required>
<option value="" disabled selected></option>
{% for z in numbers %}
<option {% if yourvalue = z %}
selected
{% endif %}
value="{{ z }}">{{ z }}</option>
{% endfor %}
</select>
<input type="submit" value="Submit">
</form>