2011-10-15 15 views
9

在Flask 0.8中,我知道我可以使用form.fieldname.data訪問各個表單域,但是是否有一種迭代所有表單域的簡單方法?我正在構建一個電子郵件消息體,並且我想遍歷所有字段併爲每個字段創建一個字段名/值條目,而不是通過爲每個字段命名和添加來手動構建它。在Flask中迭代已提交的表單域?

回答

23

我懷疑你正在使用WTForms

您可以通過表單數據迭代:

for fieldname, value in form.data.items(): 
    pass 

可以遍歷所有的表單字段:

for field in form: 
    # these are available to you: 
    field.name 
    field.description 
    field.label.text 
    field.data 
7

的表單對象定義了它的迭代器:

{% for field in form %} 
    <tr> 
    {% if field.type == "BooleanField" %} 
     <td></td> 
     <td>{{ field }} {{ field.label }}</td> 
    {% else %} 
     <td>{{ field.label }}</td> 
     <td>{{ field }}</td> 
    {% end %} 
    </tr> 
{% endfor %} 

這是從http://wtforms.simplecodes.com/docs/0.6/fields.html