无法从烧瓶中的 HTML 获取当前选择的选项
not able to get current selected option from HTML in flask
我有一个表单,其中有一个下拉列表和其他字段值。用户选择的选项未被选中并出现错误,不是有效的选择。
我不知道确切的问题出在哪里,但是提交时的表单正在检查是否所有字段都已填写,然后针对第一个字段不是有效选择引发错误。
这是我的 HTML 代码:
<select name="Product">
{% for choice in choices %}
<option value="{{ choice }}" > {{ choice }} </option>
{% endfor %}
</select>
表格:
class myForm(FlaskForm):
product = SelectField('Product', validators = [DataRequired()])
rate = FloatField('rate')
index = FloatField('index')
wind = FloatField('wind')
submit = SubmitField("Submit")
我们将不胜感激。
我不知道您是如何呈现表单的,但是您使用选择字段的方式是您遇到问题的主要原因。
以下是如何逐步构建代码:
烧瓶:
class myForm(FlaskForm):
product = SelectField('Product',validators=[DataRequired()])
rate = FloatField('rate')
index = FloatField('index')
wind = FloatField('wind')
submit = SubmitField("Submit")
@app.route('/home', methods=['GET', 'POST'])
def home():
form = myForm()
# Populating the product select field with data in your DB
form.product.choices = [(p.id, p.name) for p in Product.query.order_by(Product.name.asc()).all()]
if form.validate_on_submit():
# Getting form's data
product = form.product.data
return render_template('index.html', form=form)
HTML:
<form action='' method="POST" novalidate>
{{ form.hidden_tag() }}
{{ form.product.label }}
{{ form.product }}
{% for error in form.product.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</form>
请注意如何使用 Jinja 在 HTML 中呈现产品字段。好消息是,在您的表单 class 中定义的字段知道如何将自己呈现为 HTML 匹配它们各自的类型。
我有一个表单,其中有一个下拉列表和其他字段值。用户选择的选项未被选中并出现错误,不是有效的选择。 我不知道确切的问题出在哪里,但是提交时的表单正在检查是否所有字段都已填写,然后针对第一个字段不是有效选择引发错误。
这是我的 HTML 代码:
<select name="Product">
{% for choice in choices %}
<option value="{{ choice }}" > {{ choice }} </option>
{% endfor %}
</select>
表格:
class myForm(FlaskForm):
product = SelectField('Product', validators = [DataRequired()])
rate = FloatField('rate')
index = FloatField('index')
wind = FloatField('wind')
submit = SubmitField("Submit")
我们将不胜感激。
我不知道您是如何呈现表单的,但是您使用选择字段的方式是您遇到问题的主要原因。
以下是如何逐步构建代码:
烧瓶:
class myForm(FlaskForm):
product = SelectField('Product',validators=[DataRequired()])
rate = FloatField('rate')
index = FloatField('index')
wind = FloatField('wind')
submit = SubmitField("Submit")
@app.route('/home', methods=['GET', 'POST'])
def home():
form = myForm()
# Populating the product select field with data in your DB
form.product.choices = [(p.id, p.name) for p in Product.query.order_by(Product.name.asc()).all()]
if form.validate_on_submit():
# Getting form's data
product = form.product.data
return render_template('index.html', form=form)
HTML:
<form action='' method="POST" novalidate>
{{ form.hidden_tag() }}
{{ form.product.label }}
{{ form.product }}
{% for error in form.product.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</form>
请注意如何使用 Jinja 在 HTML 中呈现产品字段。好消息是,在您的表单 class 中定义的字段知道如何将自己呈现为 HTML 匹配它们各自的类型。