FlaskForm wtforms多个输入字段单次提交



使用 FlaskForm 和 SelectMultipleField,我创建了一个允许对多项选择进行排名的选择表:1、2、3、...

为了将选项以网格模式放置在表格上,我使每一行都成为SelectMultipleField自己的实例。

提交按钮仅返回 SelectMultipleField (dogs( 的第一个实例的值。

如何让提交按钮返回 SelectMultipleField 的所有实例中的值?

这是我的表单模块中的类:

class LPRForm(FlaskForm):
    party = ['Dogs', 'Cats', 'Rabbits', 'Birds']
    dog = [('', 'D. Duke'), ('', 'R. Rusty'), 
             ('', 'T. Tucker'), ('', 'R. Roger')]
    cat = [('', 'S. Shadow'), ('', 'M. Misty'), 
             ('', 'P. Patch'), ('', 'P. Paws')]
    rabbit = [('', ''), ('', 'C. Clover'), ('', ''), ('', '')]
    bird = [('', 'P. Pikachu'), ('', 'S. Starburst'), 
              ('', ''), ('', 'F. Flighty')]
    vote_dog = SelectMultipleField('District', choices=dog, 
                        option_widget=widgets.TextInput() )
    vote_cat = SelectMultipleField('District', choices=cat, 
                        option_widget=widgets.TextInput() )
    vote_rabbit = SelectMultipleField('District', choices=rabbit, 
                        option_widget=widgets.TextInput() )
    vote_bird = SelectMultipleField('District', choices=bird, 
                        option_widget=widgets.TextInput() )
    submit = SubmitField('Cast Ballot')

以下是 html 文件的相关证明:

<table style="width:100%" align="center">
    <tr>
    <td>  </td>
    {% for vote in form.vote_dog %}
        {% if vote.label != '': %}
            <td>{{ vote(size="2") }}</td> <td>{{ vote.label }}</td>
        {% endif %}
    {% endfor %}
    </tr>
    <tr>
    <td>  </td>
    {% for vote in form.vote_cat %}
        {% if vote.label != '': %}
            <td>{{ vote(size="2") }}</td> <td>{{ vote.label }}</td>
        {% endif %}
    {% endfor %}
    </tr>
    <tr>
    <td>  </td>
    {% for vote in form.vote_rabbit %}
        {% if vote.label != '': %}
            <td>{{ vote(size="2") }}</td> <td>{{ vote.label }}</td>
        {% endif %}
    {% endfor %}
    </tr>
    <tr>
    <td>  </td>
    {% for vote in form.vote_bird %}
        {% if vote.label != '': %}
            <td>{{ vote(size="2") }}</td> <td>{{ vote.label }}</td>
        {% endif %}
    {% endfor %}
    </tr>
</table>
</td>
</tr>
{{ form.submit }}

和视图模块:

@app.route('/lpr', methods=['GET', 'POST'])
def lpr():
    form = LPRForm() 
    return render_template('lpr.html', title='Home', form=form)

我能够通过使用FormField来工作。 但是,文档给出了默认分隔符作为- 。 此外,我明确标识了separator='-',但只有当我使用 . 作为分隔符时,在调用类时,它才能正常工作,...即使有separator='-'.

最新更新