我在form.py中有以下代码
OPTIONS = ['Option1', 'Option2', 'Option3']
class Test_Form(Form):
test = SelectField('Dropdown', coerce= str,
choices=[(f, f) for f in OPTIONS])
submit = SubmitField('Submit')
我模板中的以下代码
<div class = "control-group">
<label class="control-label">
{{ form.test.label }} </label>
{% if form.test.errors %}
{% for error in form.test.errors %}
<p class="error-message"> {{ error }}</p>
{% endfor %}
{% endif %}
<div class="controls">
<select name=form.test.label width="80px">
{% for i,j in form.test.choices %}
<option value = {{ i }} > {{ j }} </option>
{% endfor %}
</select>
</div>
</div>
以下是我的观看功能
def show_logs():
my_form = Test_Form()
if request.method == "POST":
if logs_form.validate() == False:
return render_template('test.html', form = my_form)
else:
return my_form.test.data
#return render_template('test_success.html', output = output_list)
elif request.method == "GET":
return render_template('test.html', form = my_form)
我得到了一个&#34;不是一个有效的选择&#34;每次我提交表格。我在SO上完成了之前的问题并尝试了coerce = str
,但我仍然得到了同样的信息。我在这里缺少什么?
答案 0 :(得分:2)
我尝试了你的代码,它在我的结尾完美运行。然而,我唯一改变的是您的模板代码,因为您的模板代码不完整。它没有提交按钮,也没有<form>
标签声明。
这是我使用的模板代码:
<form action="" method='post'>
{{ form.hidden_tag() }}
<ul class="request_form">
{%if form.errors%}
Please correct the following fields:
{%for each in form.errors%}
<br>{{each}}
{%endfor%}
{%endif%}
{%for each in form%}
{%if each.name != "csrf_token" and each.name!="submit"%}
<li>
<label>{{each.name}}</label>
{{each()}}
</li>
{%endif%}
{%endfor%}
<li/>{{form.submit}}
</ul>
</form>
另外,在您看来,您应该logs_form.validate()
时检查my_form.validate()
。<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />
我希望这能解决你的问题。