WTForms: Instale 'email_validator' para soporte de validación de correo electrónico


15

Obtención de excepción al ejecutar el siguiente código para la validación de formularios.

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.

Se ejecuta perfectamente en codeanywhere VM. No en la 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()])

El seguimiento de la pila podría usar algún formato.
Sid

Respuestas:


16

Si echa un vistazo al archivo wtforms / validators.py en la línea 9:

import email_validator

Simplemente instale el paquete:

pip install email_validator

2
Incluso la excepción deja en claro la solución:Exception: Install 'email_validator' for email validation support.
dspencer

Mi ppl mala .. Tenía curiosidad por qué explícitamente pidió hacerlo en mi instancia local cuando no lo hizo en mi VM. estaba tratando de descubrir cómo anticipar y evitar tales errores de máquina cruzada / plataforma desde el principio.
VeeDuvv

2
Encontré el mismo problema hoy, donde la aplicación funciona bien en mi local pero arroja este error en la VM. WTForms lanzó una nueva versión 2.3.1 justo hoy que rompió las cosas. Volviendo a 2.2.1 lo arregló para mí.
absk


3

Si quieres instalarlo con wtforms:

pip install wtforms[email]
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.