Flask Select字段 - 不是有效选择

时间:2015-11-29 22:15:20

标签: python flask flask-wtforms

我在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,但我仍然得到了同样的信息。我在这里缺少什么?

1 个答案:

答案 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" /> 我希望这能解决你的问题。