pallets-eco / wtforms

A flexible forms validation and rendering library for Python.
https://wtforms.readthedocs.io
BSD 3-Clause "New" or "Revised" License
1.51k stars 395 forks source link

Support for async validation mechanisms #839

Open simonw opened 7 months ago

simonw commented 7 months ago

I found myself wanting to add a custom validator to a form that makes an asynchronous HTTP request (using httpx) to confirm that a provided URL was valid - but realized that wtforms currently only supports blocking synchronous functions for validators.

There is a project that extends wtforms to work with async, but it's packaged for Starlette which I'm not using here: https://github.com/kubetail-org/starlette-wtf/blob/master/starlette_wtf/form.py

It would be great if wtforms provided an async validation mechanism in the default package. It's an increasingly common pattern thanks to the popularity of projects like Starlette and FastAPI. My own Datasette package uses async and has recently adopted wtforms for the enrichments feature, which is how I found this limitation.