Ответ 1
Возможное решение таково:
-
На стороне клиента вы прикрепляете обработчик к событию
blur
во всех элементах управления в форме. -
Каждый раз, когда происходит размытие, вы запускаете функцию Javascript, которая собирает значения всех полей и затем отправляет их в качестве запроса POST ajax.
-
На сервере функция просмотра, обрабатывающая этот запрос POST ajax, создает экземпляр формы Flask-WTF, а затем проверяет ее. Любые ошибки, возникающие в результате проверки, собираются в словарь, который затем отправляется в ответ JSON обратно клиенту.
Например, успешная проверка может вернуть следующий JSON:
{ "errors": {} }
Ответ, который включает ошибки, может быть:
{ "errors": { "name": "This field is required", "age": "Enter a numeric value between 0 and 99" } }
-
Клиент получает этот ответ JSON и применяет необходимые изменения к DOM для выявления ошибок.
-
Если вы получите новое событие размытия перед предыдущим, вы, вероятно, захотите отменить ожидающий ajax POST и запустить новый с обновленными значениями полей. Вы должны иметь только один ожидающий запрос проверки, чтобы избежать условий гонки.