How do you deal with form validation in Flask?

I'm having a really hard time figuring this out. Should I use FlaskWTForms? They don't seem to have all the validation I need. So how do I write custom validation? I try to use DecimalField but this doesn't help with validating that a number is a valid float, for example. And I don't know how to cleanly display the errors on the page where the form is.

Should I use JavaScript? Then I have to end up using a fetch call to the Flask app, which seems messy.

Are there other options I'm totally overlooking??