WTForms: Instale 'email_validator' para suporte à validação de email

15

Obtendo exceção ao executar o código a seguir para validação de formulário.

File "/Users/homeduvvuri/Documents/Learning/PartyGoUdemy/PartGo/user/forms.py", line 11, in BaseUserForm
    email = EmailField('Email', [validators.DataRequired(), validators.Email()])
File "/Users/homeduvvuri/Documents/Learning/PartyGoUdemy/PartGo/partgo-env/lib/python3.7/site-packages/wtforms/validators.py", line 332, in __init__
    raise Exception("Install 'email_validator' for email validation support.")
Exception: Install 'email_validator' for email validation support.

Executa perfeitamente no codeanywhere VM. Não na máquina local.

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import Form, StringField, PasswordField, validators, ValidationError
from wtforms.validators import InputRequired, Email
from wtforms.fields.html5 import EmailField
from wtforms.widgets import TextArea
from user.models import User

class BaseUserForm(FlaskForm):
    name = StringField('Name', [validators.DataRequired(), validators.Length(min=2, max=30)])
    email = EmailField('Email', [validators.DataRequired(), validators.Email()])
VeeDuvv
fonte
O rastreamento de pilha pode usar alguma formatação.
Sid

Respostas:

16

Se você der uma olhada no arquivo wtforms / validators.py na linha 9:

import email_validator

Basta instalar o pacote:

pip install email_validator
ivan_filho
fonte
2
Até a exceção torna a solução clara:Exception: Install 'email_validator' for email validation support.
dspencer
Meu ppl ruim .. Eu estava curioso por que ele pediu explicitamente para fazê-lo na minha instância local, quando não na minha vm. estava tentando descobrir como antecipar e evitar esses erros entre máquinas / plataforma desde o início.
VeeDuvv 22/04
2
Encontrei o mesmo problema hoje, em que o aplicativo funciona bem no meu local, mas gera esse erro na VM. WTForms lançou uma nova versão 2.3.1 hoje que quebrou as coisas. Voltando à 2.2.1, consertei para mim.
absk 22/04
3

Eu tive o mesmo problema com as atualizações mais recentes, tentei instalar o email_validator e o validador de balões e continuei com essa exceção. Resolvido adicionando em requirements.txt a seguinte linha: email-validator == 1.0.5, conforme sugerido [aqui]. ( Https://github.com/alphagov/notifications-admin/commit/5ce2906c5aa6d16 )

CelioMarcos
fonte
resolveu meu problema
Andrzej O
3

Se você deseja que ele seja instalado com wtforms:

pip install wtforms[email]
munsu
fonte