Quickstart — Flask-WTF Documentation (1.3.x)

# Quickstart

Eager to get started? This page gives a good introduction to Flask-WTF. It assumes you already have Flask-WTF installed. If you do not, head over to the Installation section.

## Creating Forms

Flask-WTF provides your Flask application integration with WTForms. For example:

    from flask_wtf import FlaskForm
    from wtforms import StringField
    from wtforms.validators import DataRequired

    class MyForm(FlaskForm):
        name = StringField('name', validators=[DataRequired()])

Note

From version 0.9.0, Flask-WTF will not import anything from wtforms, you need to import fields from wtforms.

In addition, a CSRF token hidden field is created automatically. You can render this in your template:

    <form method="POST" action="/">
        {{ form.csrf_token }}
        {{ form.name.label }} {{ form.name(size=20) }}
        <input type="submit" value="Go">
    </form>

If your form has multiple hidden fields, you can render them in one block using `hidden_tag()`.

    <form method="POST" action="/">
        {{ form.hidden_tag() }}
        {{ form.name.label }} {{ form.name(size=20) }}
        <input type="submit" value="Go">
    </form>

## Validating Forms

Validating the request in your view handlers:

    @app.route('/submit', methods=['GET', 'POST'])
    def submit():
        form = MyForm()
        if form.validate_on_submit():
            return redirect('/success')
        return render_template('submit.html', form=form)

Note that you don’t have to pass `request.form` to Flask-WTF; it will load automatically. And the convenient `validate_on_submit` will check if it is a POST request and if it is valid.

If your forms include validation, you’ll need to add to your template to display any error messages. Using the `form.name` field from the example above, that would look like this:

    {% if form.name.errors %}
        <ul class="errors">
        {% for error in form.name.errors %}
            <li>{{ error }}</li>
        {% endfor %}
        </ul>
    {% endif %}

Heading over to Creating Forms to learn more skills.