无法从烧瓶中的 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 匹配它们各自的类型。