【发布时间】:2019-08-19 19:30:27
【问题描述】:
我实现了 WTForm 的 FieldList 和 SelectField 以根据 JSON 文件 (as stated in this answer) 中的数据呈现多个选择选项。它可以很好地显示选择选项,但是当我尝试通过SubmitField() 表单传递用户选择的所有值时,请求仅包含第一个值。
问题:如何从我的路线中访问多个 SelectField 中的所有选定值?
有趣的笔记:
- 我对多个
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)
【问题讨论】:
标签: python rest flask flask-wtforms wtforms