【问题标题】:not able to get current selected option from HTML in flask无法从烧瓶中的 HTML 获取当前选定的选项
【发布时间】:2020-10-12 12:36:04
【问题描述】:

我有一个包含下拉列表和其他字段值的表单。用户选择的选项没有被选中并出现错误,不是有效的选择。 我不知道确切的问题出在哪里,但是提交的表单正在检查是否所有字段都已填写,然后针对第一个字段引发错误,这不是一个有效的选择。

这是我的 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")

我们将不胜感激。

【问题讨论】:

    标签: html flask jinja2 dropdown flask-wtforms


    【解决方案1】:

    我不知道您如何呈现表单,但您使用选择字段的方式是您遇到问题的主要原因。

    这里是如何构建代码的一步一步:

    烧瓶:

    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>
    

    注意 product 字段是如何使用 Jinja 在 HTML 中呈现的。好消息是,在表单类中定义的字段知道如何将自己呈现为与其各自类型匹配的 HTML。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2013-03-08
      • 2023-03-20
      • 2012-02-07
      • 1970-01-01
      • 2020-08-13
      • 2023-03-22
      相关资源
      最近更新 更多