urschrei
urschrei

Reputation: 26889

Iterating over submitted form fields in Flask?

In Flask 0.8, I know I can access individual form fields using form.fieldname.data, but is there a simple way of iterating over all the form fields? I'm building an email message body, and I'd like to loop over all the fields and create a fieldname/value entry for each, as opposed to manually building it by naming each field and appending.

Upvotes: 19

Views: 17390

Answers (2)

squebe
squebe

Reputation: 171

The form object has an iterator defined on it:

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

This is from https://wtforms.readthedocs.io/en/2.3.x/fields/#wtforms.fields.Field.type

Upvotes: 17

Ski
Ski

Reputation: 14497

I suspect that your are using WTForms.

You can iterate over form data:

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

You can iterate over all form fields:

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

Upvotes: 43

Related Questions