Form is never valid with WTForms

Flask-WTF adds a CSRF protection field. If it’s not present, the CSRF validation will fail, and the form will be invalid. Use form.hidden_tag() to include any hidden fields in your form (including the CSRF field).

<form method="post">
    {{ form.hidden_tag() }}
    ...

In general, if a form is not validating, you should check form.errors after calling validate to see what’s wrong.

You don’t see the error since you’re not rendering that field (or rendering the errors for any fields in this case, but that wouldn’t help with this issue). If you ran in a debugger and examined form.errors, you would see that there was indeed a “CSRF token missing” error.

Leave a Comment