我用SelectField
实现了WTForm的FieldList
,以基于JSON文件(as stated in this answer)中的数据呈现多个select选项。它可以很好地显示select选项,但是当我试图通过SubmitField()
表单传递用户选择的所有值时,请求只包含第一个表单中的值。你知道吗
问题:如何从路由中的多个SelectFields访问所有选定值?
有趣的注意:
StringFields
执行了相同的FieldList
方法,并按照请求中的预期获得每个值。(为什么SelectFields
的情况会有所不同?)你知道吗Ford
、Associate
和Bucks
是选择字段中的值。你知道吗Ford
。为什么不也Associate
和Bucks
?你知道吗我的表单(forms.py
):
class SelectForm(FlaskForm):
select = SelectField(choices=[]) #TODO testing without placeholder
class SelectFormList(FlaskForm):
"""A form that supports multiple select forms"""
select_entries = FieldList(FormField(SelectForm))
我的模板(home.html
):
<form id="metadata_home_fom" action="{{ url_for('save_metadata') }}" method="POST">
{% for select_form in select_metadata_form_list.select_entries %}
{{ select_form.hidden_tag() }}
{{ select_form.select.label }}: {{ select_form.select }}
{% endfor %}
{% for text_form in text_metadata_form.text_fields %}
{{ text_form.hidden_tag() }}
{{ text_form.text }}
{% endfor %}
</form>
我的视图(routes.py
):
@app.route('/home', methods=['POST', 'GET'])
def home():
select_metadata_form_list = SelectFormList()
select_metadata_form_list.select_entries = get_select_entries()
context = {"text_metadata_form": text_metadata_form,
"select_metadata_form_list": select_metadata_form_list}
return render_template('configuration.html', **context)
问题是我在循环中创建表单时没有重写表单的
name
,所以每个SelectFields
都有相同的名称。你知道吗快速修复只是在名称后面附加一个唯一的id:
相关问题 更多 >
编程相关推荐