我的 form.py 是这样的:
class QuestionForm(FlaskForm):
...
choices = SelectMultipleField('answer', choices=[('nv', 'Nevada'), ('cl','California'),('la','Los Angeles'], validators=[DataRequired()])
...
submit = SubmitField('submit')
为了更出色,我尝试为这些选项创建一个下拉菜单,我的 index.html 如下:
{% extends "base.html" %}
{% block app_content %}
<h1>Hi, {{ current_user.username }}!</h1>
...
<form action="", method="post">
{{ form.hidden_tag() }}
...
{{ form.choices.label }} <br>
<div class="row">
<select class="selectpicker" multiple data-live-search="true" data-actions-box="true">
{% for values in form.choices %}
<p> {{ values }}</p>
{% endfor %}
</select>
</div>
</p>
<p>
{{ form.submit() }}
</p>
</form>
{% endblock %}
...
问题是我不知道如何将选择传递给烧瓶中的路线。目前我的 route.py 是这样的:
def myroute():
form = QuestionForm()
if form.validate_on_submit():
...
choices=list(filter(None, request.form.getlist('choices')))
for item in choices:
choice = Choices(choice=item, ...)
db.session.add(choice)
db.session.commit()
...
答案 0 :(得分:1)
您需要为选择字段设置一个名称。 将您的 index.html 更改为此:
<select class="selectpicker" name='choices' multiple data-live-search="true" data-actions-box="true">
{% for values in form.choices %}
{{ values }}
{% endfor %}