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()])

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

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

Se você deseja que ele seja instalado com wtforms:

pip install wtforms[email]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.