2015-11-29 46 views
0

我在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) 

我每次提交表單時都會收到「不合理的選擇」。我經歷了以上關於SO的所有問題,並嘗試了coerce = str,但我仍然收到相同的信息。我在這裏錯過了什麼?

回答

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()
我希望這能解決你的問題。